diff --git a/_saves/Eustia_autoSave b/_saves/Eustia_autoSave index b68992a..315a540 100644 --- a/_saves/Eustia_autoSave +++ b/_saves/Eustia_autoSave @@ -1 +1 @@ -N4IgZgNg9lBOCSATEAuEBnALrApjzADAIwgA0IAFjrFKqAJYC2AhgOY6qXVQB0A7jgBGABzIhmAOybNMHFGGYR0OchOaM5IAMLMmYiADdURchWEsAHsYI3TolERsFyLNZesvJzVM/GYA1h4giDhgQYwhYQ6+jFASOACePuQ4Fva+OACOAK705jgSmKgA2gC65PSyjOh0IADGcViSmDUooIIwgQ7kkEkOAL7kmDBKdIMgWbnCrcD949B1tYj0uHWY9HGc2aLkVigArOR9AJzjkGwzIJU4jAAi+LoQqNjZKiDZygBC+AIFADL0VgUIooF5vAD64OUOEQkOMRAAzARjgAWAgIgAcx3IkNgklh4PhSNR6Kx5GYuGYrWKoDcmgAOtkUTgCIJGfs6iiAExiFjTEraXSMChQDQgUqDWnqBlMlls7Ic7m85j8lDFEAAK3o2VY2Uk4slIDpnEZzNZ7M5PM8qvVAGkACoANQNpClYrQjIA7FyAGxcr1csAka3UkAOx0AMR5EtdRulJuy3r9AaDyptIFYUAgiH8iRdbplZvliqtID5ocE9AoH2ytBjBYTZuYFqVIYFWuYUEwklY+bj7pAppZzYVlrTofQVAkrAkBhFYvr/cLw5bpfLAsn9Fn844i+NHsTvv9h9TbbVmvoMM7ff3g8PyZPwbLKon2DwhCfWFw+AIpd1PbqCgezEf9p0AntSwsehOygntiDEWCoFg6dfwQ6CkOg6cERveMUAkbIIAgM91QSegchIPdcPwwjiJAUicmjQ192oojn3Tejsmwyj3RY2iOJRHCeII1j13PDj9kEuReLY0MOJ9STUGk0SSLIxMFLw4S+NUjF1KUl8BQ445dM0mSDNUxwDXKDB/DyVAFCUN4gNgZAUF8SEnMQLQszgOE0FwZAcXBa5GAACS3TBfLKQKIBwZgDBwP4oDqXzZkCgx6HQa4CVqL933g0FYFecZBB+PAJAAQUwbs6n8W4ZG8DSaJASFmBwehIqsoC3xcrlyHQGzCOSaz6EIgA5XC7x9fYWTESFlnQZhBBi7K2gwN8fxINViiILkuXKMoJTOLNoAEWBqSsrAcFVGIZC6Xx0GEPAXMcPrsCCNh6CCcKggaCRwg+xZ5EUZRXpkDL1jqS5hm7CB7SYOQuURH0poxHhjicGwiAxQ56myWBYDh90EX2FFjh4IhjkpqnqYxOwhsEGRMBi4wXDiPNXJSNJ6cZmK6pYdghuEKAMriPm2DkDILGwZgxYFjmyygeLbhWHA1ggPpequGc4BwABlWRVU1ppYBBLkEWOYmeAROZTApFyQHHHL1o/Wo+RKZwPdIT3va90higAWhMQPSGD0OTGcMOQ6D6Oo6j8pvcO8gaGyWROD+eBHVYAANcqNXK25ysyTIAE0AFEUXK7IAFk+E+fxHXocqxAMRRXhmcZ4rOjY/oPY4cARRB2UEfYCC9ZhjkH7J0a5UeFWxlELQIMBGWOH0iDCchdXoe2fUEZlBEQT0MXBIhmBRZhwRRMBPWOcEMUQBFBHBfZia5UIUUQRAwFRMR1ndIhPQIh9CiT0N99iehRH6foQA=== \ No newline at end of file +N4IgZgNg9lBOCSATEAuEBnALrApjzADAIwgA0IAFjrFKqAJYC2AhgOY6qXVQB0A7jgBGABzIhmAOybNMHFGGYR0OchOaM5IAMLMmYiADdURchWEsAHqgBMBO6dEoidguRZrLN1yHfNU3mQBrL3JEHDAQnzCIlFs3KAkcAE9/chwLR28cAEcAV3pzHAlMVABtAF1yellGdDoQAGMErElMOpRQQRhgp3JIFKcAX3JMGCU6YZAc/OF20HQ+OEQSIcnoBvrEelwGzHoEzlzRcisUAFZyAedJyDY5kGqcRgARfF0IVGxclRBc5QAhfACIoAGXorAoJRQXx+AH1YcocIh4cYACxEVEADgIAGYAGyYkwgeGwSTI2FojHY/GE8jMXDMdqlUAeTQAHVyqJwBEEHLODVR1jELFmZW0ukYFCgGhA5WGLPU7M53N5uX5guFzFFKFKIAAVvRcqxcpJZfKQKzOByuTy+QKhW4tUyQABpAAqADUzaQFTK0ByAOzWPHWQPWMAkR3a3Xuj0AMSFcp9FsVVtyQZDYYjmujIFYUAgiECyW9vqVNtV6odPidYsE9Aof1ytCTZbTNuYdo1UedBuYUEwklYpZTfpA1u5nbV9pzzvQVAkrAkBilMtbo/Lk671ZFc4o9GXq4468t/vTwdD5+zPbFBqR/ZHp/H58zV8jNdzWFw+GIYi/eEIatjSHBoKCHMRgMXUCh2rCx6H7OCh1/E54KgRDFwIWDUPQ1gcUfVMUAkXIIAgG8dRAJJ6DyEgTwIoiSLI3VKLyRNzVPejSI/Z1mNyPDaL9DjGIoqjOXwgTiM43cxR4s4xLkQSuOkkS8Tk1AFKk8ieIDVTCIkoSeMxHT1NrTSRIATiMvTFNM6iCDNSoMECApUAUJQfjA2BkBQbx4Q8xAtALOAUTQXBkHIeFHkYAAJA9MGCipwthCAcGYAwcBBKAGmC4BJnhAx6HQR5yXqf8fxWGFJkEIE8AkABBTBBwaQJnhkPxdIY4lYWYHB6Hihz4S2dBmEEZLio6DBsAA38dVKIgcTOSoKjlG4C2gARYCZBysBwbUiRYTAem8dBhDwLy4gm2BjACVh6CuqpijuxoDicbwWBujZ5EUZRyBaPYsHoBp7lGQcIDdJg5Dm6wzOsM5MQDMyeDMsy8TxIgzKIC5GlyWBYDBv0MdRBGzJcEmScxsxUhAQQZEwZLKcYBIS28tIMkp6mGuSlq3rkbxhCgAqEi5tgeZZ7BmCF9h6agNLnm2HBdggAZvHBCQ4BwABlWRtSOwdYChaG8TOHg8UGSY/M4WcSsmsr6hFMpXAd0hHedp3XdKABaExPdIb3fZMVw/Z9r3g6DoPKgd5byBoXJZE4F0oATLRUVYABeMQDEUb45kmNKNv2CQ0zMnAcUQPlBDOAhA2YMzS9yYnbD5TEzlRO0CDADlkaICJyGNegvJAPFBC5QREADTFYSIZhUWYWFUTAeHYUxRAcUEWEznm6xwlRRBEDAMzUTEPZ8YDGlBSRgg8SxQYgA= diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index 5096061..b313060 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -4628,8 +4628,8 @@ EnemyPoint_List /*EnemyPoint_List ['hp','atk','def','money','exp','point','name']*/; Equip_List - : '生命'|'生命上限'|'攻击'|'防御'|'护盾'|'魔力'|'魔力上限' - /*Equip_List ['hp','hpmax','atk','def','mdef','mana','manamax']*/; + : '生命'|'生命上限'|'攻击'|'防御'|'法强'|'魔力'|'魔力上限'|'速度' + /*Equip_List ['hp','hpmax','atk','def','mdef','mana','manamax','speed']*/; Key_List : '黄钥匙'|'蓝钥匙'|'红钥匙'|'绿钥匙'|'铁门钥匙' diff --git a/_server/config.json b/_server/config.json index dd8cc79..e8883c4 100644 --- a/_server/config.json +++ b/_server/config.json @@ -1 +1 @@ -{"viewportLoc":[0,0],"editorLastFloorId":"jiedao","lastUsed":[{"idnum":210,"id":"skeletonWarrior","images":"enemys","y":9,"recent":1735825145197,"frequent":4},{"idnum":21,"id":"yellowKey","images":"items","y":0,"recent":1735824906066,"frequent":14},{"idnum":81,"id":"yellowDoor","images":"animates","y":4,"recent":1735824901122,"frequent":26},{"idnum":214,"id":"zombieKnight","images":"enemys","y":13,"recent":1735824888165,"frequent":2},{"idnum":82,"id":"blueDoor","images":"animates","y":5,"recent":1735824878838,"frequent":4},{"idnum":32,"id":"bluePotion","images":"items","y":21,"recent":1735824871469,"frequent":2},{"idnum":28,"id":"blueGem","images":"items","y":17,"recent":1735824867878,"frequent":6},{"idnum":27,"id":"redGem","images":"items","y":16,"recent":1735824864181,"frequent":5},{"idnum":22,"id":"blueKey","images":"items","y":1,"recent":1735824852246,"frequent":4},{"idnum":140,"id":"autotile4","images":"autotile","y":0,"recent":1735824840165,"frequent":138},{"idnum":209,"id":"skeleton","images":"enemys","y":8,"recent":1735824813505,"frequent":2},{"idnum":94,"id":"rightPortal","images":"animates","y":25,"recent":1735824733893,"frequent":6},{"idnum":92,"id":"leftPortal","images":"animates","y":24,"recent":1735824084823,"frequent":2},{"idnum":91,"id":"upPortal","images":"animates","y":26,"recent":1735821889246,"frequent":2},{"idnum":85,"id":"specialDoor","images":"animates","y":8,"recent":1735820976103,"frequent":3},{"idnum":93,"id":"downPortal","images":"animates","y":23,"recent":1735820969951,"frequent":2},{"idnum":89,"id":"portal","images":"animates","y":17,"recent":1735820958612,"frequent":1},{"idnum":26,"id":"bigKey","images":"items","y":6,"recent":1735820920269,"frequent":1},{"idnum":34,"id":"yellowPotion","images":"items","y":23,"recent":1735820909149,"frequent":1},{"idnum":33,"id":"greenPotion","images":"items","y":22,"recent":1735820906301,"frequent":1},{"idnum":83,"id":"redDoor","images":"animates","y":6,"recent":1735820844323,"frequent":2},{"idnum":247,"id":"magicMaster","images":"enemys","y":46,"recent":1735820830425,"frequent":1},{"idnum":20160,"id":"X20160","images":"5.png","x":0,"y":20,"isTile":true,"recent":1735398503013,"frequent":2},{"idnum":20168,"id":"X20168","images":"5.png","x":0,"y":21,"isTile":true,"recent":1735398496973,"frequent":3},{"idnum":20176,"id":"X20176","images":"5.png","x":0,"y":22,"isTile":true,"recent":1735398485125,"frequent":1},{"idnum":71742,"id":"X71742","images":"11.png","x":6,"y":217,"isTile":true,"recent":1735398452693,"frequent":1},{"idnum":71750,"id":"X71750","images":"11.png","x":6,"y":218,"isTile":true,"recent":1735398448325,"frequent":1},{"idnum":71751,"id":"X71751","images":"11.png","x":7,"y":218,"isTile":true,"recent":1735398443645,"frequent":1},{"idnum":71783,"id":"X71783","images":"11.png","x":7,"y":222,"isTile":true,"recent":1735398426909,"frequent":7},{"idnum":71799,"id":"X71799","images":"11.png","x":7,"y":224,"isTile":true,"recent":1735398421365,"frequent":5},{"idnum":71826,"id":"X71826","images":"11.png","x":2,"y":228,"isTile":true,"recent":1735398415661,"frequent":2},{"idnum":71818,"id":"X71818","images":"11.png","x":2,"y":227,"isTile":true,"recent":1735398413269,"frequent":3},{"idnum":224,"id":"swordsman","images":"enemys","y":23,"recent":1735398341974,"frequent":6},{"idnum":71842,"id":"X71842","images":"11.png","x":2,"y":230,"isTile":true,"recent":1735398315069,"frequent":1},{"idnum":71834,"id":"X71834","images":"11.png","x":2,"y":229,"isTile":true,"recent":1735398312437,"frequent":1},{"idnum":110114,"id":"X110114","images":"C4.png","x":2,"y":14,"isTile":true,"recent":1735398246502,"frequent":6},{"idnum":110122,"id":"X110122","images":"C4.png","x":2,"y":15,"isTile":true,"recent":1735398239998,"frequent":1},{"idnum":110028,"id":"X110028","images":"C4.png","x":4,"y":3,"isTile":true,"recent":1735398198709,"frequent":2},{"idnum":110020,"id":"X110020","images":"C4.png","x":4,"y":2,"isTile":true,"recent":1735398191398,"frequent":2},{"idnum":71791,"id":"X71791","images":"11.png","x":7,"y":223,"isTile":true,"recent":1735398163774,"frequent":3},{"idnum":71785,"id":"X71785","images":"11.png","x":1,"y":223,"isTile":true,"recent":1735398120734,"frequent":2},{"idnum":71784,"id":"X71784","images":"11.png","x":0,"y":223,"isTile":true,"recent":1735398118318,"frequent":3},{"idnum":71793,"id":"X71793","images":"11.png","x":1,"y":224,"isTile":true,"recent":1735398115446,"frequent":2},{"idnum":71792,"id":"X71792","images":"11.png","x":0,"y":224,"isTile":true,"recent":1735398113142,"frequent":2},{"idnum":71787,"id":"X71787","images":"11.png","x":3,"y":223,"isTile":true,"recent":1735398102326,"frequent":1},{"idnum":71786,"id":"X71786","images":"11.png","x":2,"y":223,"isTile":true,"recent":1735398099430,"frequent":1},{"idnum":71795,"id":"X71795","images":"11.png","x":3,"y":224,"isTile":true,"recent":1735398097359,"frequent":1},{"idnum":71794,"id":"X71794","images":"11.png","x":2,"y":224,"isTile":true,"recent":1735398094982,"frequent":1},{"idnum":130006,"id":"X130006","images":"C2.png","x":6,"y":0,"isTile":true,"recent":1735398082894,"frequent":3},{"idnum":130011,"id":"X130011","images":"C2.png","x":3,"y":1,"isTile":true,"recent":1735398078792,"frequent":2},{"idnum":71817,"id":"X71817","images":"11.png","x":1,"y":227,"isTile":true,"recent":1735398027294,"frequent":3},{"idnum":71837,"id":"X71837","images":"11.png","x":5,"y":229,"isTile":true,"recent":1735398013126,"frequent":1},{"idnum":71829,"id":"X71829","images":"11.png","x":5,"y":228,"isTile":true,"recent":1735398008166,"frequent":1},{"idnum":71821,"id":"X71821","images":"11.png","x":5,"y":227,"isTile":true,"recent":1735398005430,"frequent":1},{"idnum":71836,"id":"X71836","images":"11.png","x":4,"y":229,"isTile":true,"recent":1735397997622,"frequent":1},{"idnum":71828,"id":"X71828","images":"11.png","x":4,"y":228,"isTile":true,"recent":1735397993455,"frequent":1},{"idnum":71820,"id":"X71820","images":"11.png","x":4,"y":227,"isTile":true,"recent":1735397989903,"frequent":1},{"idnum":30217,"id":"X30217","images":"4.png","x":1,"y":27,"isTile":true,"recent":1735397944838,"frequent":3},{"idnum":110012,"id":"X110012","images":"C4.png","x":4,"y":1,"isTile":true,"recent":1735397929366,"frequent":2},{"idnum":100485,"id":"X100485","images":"Outside_B.png","x":5,"y":20,"isTile":true,"recent":1735397919927,"frequent":2},{"idnum":100436,"id":"X100436","images":"Outside_B.png","x":4,"y":18,"isTile":true,"recent":1735397880486,"frequent":1},{"idnum":100437,"id":"X100437","images":"Outside_B.png","x":5,"y":18,"isTile":true,"recent":1735397877086,"frequent":1},{"idnum":100461,"id":"X100461","images":"Outside_B.png","x":5,"y":19,"isTile":true,"recent":1735397868606,"frequent":1},{"idnum":100460,"id":"X100460","images":"Outside_B.png","x":4,"y":19,"isTile":true,"recent":1735397843448,"frequent":2},{"idnum":100484,"id":"X100484","images":"Outside_B.png","x":4,"y":20,"isTile":true,"recent":1735397840545,"frequent":2},{"idnum":40136,"id":"X40136","images":"3.png","x":0,"y":17,"isTile":true,"recent":1735397799150,"frequent":1},{"idnum":40144,"id":"X40144","images":"3.png","x":0,"y":18,"isTile":true,"recent":1735397796038,"frequent":2},{"idnum":30227,"id":"X30227","images":"4.png","x":3,"y":28,"isTile":true,"recent":1735397775591,"frequent":2},{"idnum":30214,"id":"X30214","images":"4.png","x":6,"y":26,"isTile":true,"recent":1735397768303,"frequent":1},{"idnum":30218,"id":"X30218","images":"4.png","x":2,"y":27,"isTile":true,"recent":1735397761062,"frequent":1},{"idnum":120041,"id":"X120041","images":"C3.png","x":1,"y":5,"isTile":true,"recent":1735397710494,"frequent":1},{"idnum":120042,"id":"X120042","images":"C3.png","x":2,"y":5,"isTile":true,"recent":1735397702167,"frequent":2},{"idnum":120006,"id":"X120006","images":"C3.png","x":6,"y":0,"isTile":true,"recent":1735397659951,"frequent":5},{"idnum":120014,"id":"X120014","images":"C3.png","x":6,"y":1,"isTile":true,"recent":1735397644591,"frequent":4},{"idnum":120090,"id":"X120090","images":"C3.png","x":2,"y":11,"isTile":true,"recent":1735397629759,"frequent":3},{"idnum":120150,"id":"X120150","images":"C3.png","x":6,"y":18,"isTile":true,"recent":1735397613207,"frequent":3},{"idnum":120166,"id":"X120166","images":"C3.png","x":6,"y":20,"isTile":true,"recent":1735397574639,"frequent":1},{"idnum":140170,"id":"X140170","images":"C1.png","x":2,"y":21,"isTile":true,"recent":1735397516295,"frequent":1},{"idnum":110119,"id":"X110119","images":"C4.png","x":7,"y":14,"isTile":true,"recent":1735397434752,"frequent":3},{"idnum":80083,"id":"X80083","images":"6.png","x":3,"y":10,"isTile":true,"recent":1735397403120,"frequent":6},{"idnum":80082,"id":"X80082","images":"6.png","x":2,"y":10,"isTile":true,"recent":1735397393215,"frequent":2},{"idnum":71824,"id":"X71824","images":"11.png","x":0,"y":228,"isTile":true,"recent":1735397302354,"frequent":1},{"idnum":71816,"id":"X71816","images":"11.png","x":0,"y":227,"isTile":true,"recent":1735397300089,"frequent":1},{"idnum":71825,"id":"X71825","images":"11.png","x":1,"y":228,"isTile":true,"recent":1735397296728,"frequent":1},{"idnum":71841,"id":"X71841","images":"11.png","x":1,"y":230,"isTile":true,"recent":1735397274905,"frequent":1},{"idnum":71840,"id":"X71840","images":"11.png","x":0,"y":230,"isTile":true,"recent":1735397272160,"frequent":1},{"idnum":71833,"id":"X71833","images":"11.png","x":1,"y":229,"isTile":true,"recent":1735397269433,"frequent":1},{"idnum":71832,"id":"X71832","images":"11.png","x":0,"y":229,"isTile":true,"recent":1735397266704,"frequent":1},{"idnum":71815,"id":"X71815","images":"11.png","x":7,"y":226,"isTile":true,"recent":1735397232288,"frequent":1},{"idnum":71807,"id":"X71807","images":"11.png","x":7,"y":225,"isTile":true,"recent":1735397229624,"frequent":1},{"idnum":71827,"id":"X71827","images":"11.png","x":3,"y":228,"isTile":true,"recent":1735397220728,"frequent":1},{"idnum":71819,"id":"X71819","images":"11.png","x":3,"y":227,"isTile":true,"recent":1735397218496,"frequent":1},{"idnum":120173,"id":"X120173","images":"C3.png","x":5,"y":21,"isTile":true,"recent":1735397183385,"frequent":3},{"idnum":120174,"id":"X120174","images":"C3.png","x":6,"y":21,"isTile":true,"recent":1735397125953,"frequent":6},{"idnum":120134,"id":"X120134","images":"C3.png","x":6,"y":16,"isTile":true,"recent":1735396971049,"frequent":1},{"idnum":130173,"id":"X130173","images":"C2.png","x":5,"y":21,"isTile":true,"recent":1735396958897,"frequent":1},{"idnum":120109,"id":"X120109","images":"C3.png","x":5,"y":13,"isTile":true,"recent":1735396928298,"frequent":2},{"idnum":120117,"id":"X120117","images":"C3.png","x":5,"y":14,"isTile":true,"recent":1735396877690,"frequent":1},{"idnum":120125,"id":"X120125","images":"C3.png","x":5,"y":15,"isTile":true,"recent":1735396864194,"frequent":6},{"idnum":70169,"id":"X70169","images":"11.png","x":1,"y":21,"isTile":true,"recent":1735396825666,"frequent":3},{"idnum":70161,"id":"X70161","images":"11.png","x":1,"y":20,"isTile":true,"recent":1735396814418,"frequent":3},{"idnum":70145,"id":"X70145","images":"11.png","x":1,"y":18,"isTile":true,"recent":1735396802466,"frequent":14},{"idnum":70146,"id":"X70146","images":"11.png","x":2,"y":18,"isTile":true,"recent":1735396788810,"frequent":1},{"idnum":70144,"id":"X70144","images":"11.png","x":0,"y":18,"isTile":true,"recent":1735396782475,"frequent":4},{"idnum":100386,"id":"X100386","images":"Outside_B.png","x":2,"y":16,"isTile":true,"recent":1735396757386,"frequent":1},{"idnum":100362,"id":"X100362","images":"Outside_B.png","x":2,"y":15,"isTile":true,"recent":1735396754546,"frequent":1},{"idnum":100385,"id":"X100385","images":"Outside_B.png","x":1,"y":16,"isTile":true,"recent":1735396751066,"frequent":1},{"idnum":100384,"id":"X100384","images":"Outside_B.png","x":0,"y":16,"isTile":true,"recent":1735396747826,"frequent":1},{"idnum":100361,"id":"X100361","images":"Outside_B.png","x":1,"y":15,"isTile":true,"recent":1735396745106,"frequent":2},{"idnum":100360,"id":"X100360","images":"Outside_B.png","x":0,"y":15,"isTile":true,"recent":1735396742682,"frequent":3},{"idnum":90196,"id":"X90196","images":"12.png","x":4,"y":24,"isTile":true,"recent":1735396698234,"frequent":1},{"idnum":90195,"id":"X90195","images":"12.png","x":3,"y":24,"isTile":true,"recent":1735396695530,"frequent":1},{"idnum":90194,"id":"X90194","images":"12.png","x":2,"y":24,"isTile":true,"recent":1735396691098,"frequent":1},{"idnum":90187,"id":"X90187","images":"12.png","x":3,"y":23,"isTile":true,"recent":1735396687866,"frequent":3},{"idnum":90186,"id":"X90186","images":"12.png","x":2,"y":23,"isTile":true,"recent":1735396672410,"frequent":1},{"idnum":31,"id":"redPotion","images":"items","y":20,"recent":1735396611866,"frequent":7},{"idnum":221,"id":"yellowGateKeeper","images":"enemys","y":20,"recent":1735396537794,"frequent":4},{"idnum":222,"id":"blueGateKeeper","images":"enemys","y":21,"recent":1735396534626,"frequent":3},{"idnum":226,"id":"yellowKnight","images":"enemys","y":25,"recent":1735396460524,"frequent":1},{"idnum":225,"id":"soldier","images":"enemys","y":24,"recent":1735396456036,"frequent":1},{"idnum":326,"id":"tulipFairy","images":"enemys","y":72,"recent":1735396229196,"frequent":1},{"idnum":141,"id":"autotile8","images":"autotile","y":0,"recent":1735391328901,"frequent":2},{"idnum":30,"id":"yellowGem","images":"items","y":19,"recent":1735391294213,"frequent":1},{"idnum":44,"id":"shield5","images":"items","y":59,"recent":1735391193096,"frequent":1},{"idnum":138,"id":"blueTrader","images":"npcs","y":13,"recent":1735391190680,"frequent":1},{"idnum":43,"id":"sword5","images":"items","y":54,"recent":1735391188576,"frequent":1}]} \ No newline at end of file +{ "viewportLoc": [0, 0] } diff --git a/_server/table/comment.js b/_server/table/comment.js index b417a50..f8660c0 100644 --- a/_server/table/comment.js +++ b/_server/table/comment.js @@ -187,24 +187,18 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "def": { "_leaf": true, "_type": "textarea", - "_data": "物理防御力" + "_data": "防御力" }, "mdef": { "_leaf": true, "_type": "textarea", - "_data": "魔法防御力" + "_data": "法抗(写为小数)" }, "speed": { "_leaf": true, "_type": "textarea", "_data": "速度" }, - "magic": { - "_leaf": true, - "_type": "checkbox", - "_docs": "是否为魔法攻击", - "_data": "勾选以魔法攻击计算,不勾选以物理攻击计算" - }, "money": { "_leaf": true, "_type": "textarea", diff --git a/_server/table/data.comment.js b/_server/table/data.comment.js index de82674..10e76cf 100644 --- a/_server/table/data.comment.js +++ b/_server/table/data.comment.js @@ -262,44 +262,19 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = { "def": { "_leaf": true, "_type": "textarea", - "_data": "物理防御" + "_data": "防御" }, "mdef": { "_leaf": true, "_type": "textarea", - "_data": "魔法防御" + "_data": "法强" }, "speed": { "_leaf": true, "_type": "textarea", - "_data": "攻击速度" - }, - "str": { - "_leaf": true, - "_type": "textarea", - "_data": "力量" - }, - "agi": { - "_leaf": true, - "_type": "textarea", - "_data": "敏捷" - }, - "int": { - "_leaf": true, - "_type": "textarea", - "_data": "智力" - }, - "con": { - "_leaf": true, - "_type": "textarea", - "_data": "体质" - }, - "magic": { - "_leaf": true, - "_type": "checkbox", - "_docs": "攻击类型", - "_data": "攻击类型是否是魔法" + "_data": "速度" }, + "money": { "_leaf": true, "_type": "textarea", diff --git a/project/data.js b/project/data.js index 4994232..2b0f970 100644 --- a/project/data.js +++ b/project/data.js @@ -1,3 +1,4 @@ +<<<<<<< HEAD var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = { "main": { @@ -1040,4 +1041,1632 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "blurFg": true, "hideLeftStatusBar": false } -} \ No newline at end of file +} +======= +var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = { + main: { + floorIds: [ + "Caimhome", + "jiuguan", + "KTV", + "KTVF2", + "goldkey", + "bihusuo", + "jiaotang", + "shengnvhome", + "shinvhome", + "jiedao", + "street01", + "street02", + "guangchang", + "guangchang2", + "xiaoxiang01", + "xiaoxiang02", + "xiaoxiang3", + "yiqu1", + "yiqu2", + "yiqu3", + "yiqu4", + "yiqu5", + "yiqu6", + "yiqu7", + "yiqu8", + "yiqu9", + "yiqu10", + ], + floorPartitions: [], + images: [ + "HPGaugeEnemy_A.webp", + "HPGaugeEnemy_B.webp", + "background.webp", + "backgroundvertical.webp", + "bg_0000.png", + "bg_1511.webp", + "bg_1521.webp", + "bg_2010.webp", + "bg_2011.webp", + "bg_2521.webp", + "bg_3021.webp", + "bg_3026.webp", + "bg_3028.webp", + "bg_3042.webp", + "bg_3512.webp", + "bg_3522.webp", + "bg_3531.webp", + "bg_3551.webp", + "bg_3561.webp", + "bg_3563.webp", + "bg_3571.webp", + "bg_3601.webp", + "bg_3602.webp", + "bg_3721.webp", + "bg_3801.webp", + "bg_5033.webp", + "bg_5043.webp", + "bg_5044.webp", + "bg_6004.webp", + "cao.webp", + "d.webp", + "dl.webp", + "dlr.webp", + "dr.webp", + "eve_010102.webp", + "eve_010203.webp", + "eve_010304.webp", + "eve_010501.webp", + "eve_010601.webp", + "eve_010701.webp", + "eve_010801.webp", + "eve_010902.webp", + "eve_011001.webp", + "eve_011101.webp", + "eve_011202.webp", + "eve_011302.webp", + "eve_011402.webp", + "eve_020102.webp", + "eve_020201.webp", + "eve_020301.webp", + "eve_020401.webp", + "eve_020501.webp", + "eve_020605.webp", + "eve_020701.webp", + "eve_020801.webp", + "eve_030101.webp", + "eve_030206.webp", + "eve_030302.webp", + "eve_030508.webp", + "eve_030601.webp", + "eve_030801.webp", + "eve_030901.webp", + "eve_031002.webp", + "eve_031101.webp", + "eve_040201.webp", + "eve_040401.webp", + "eve_040501.webp", + "eve_040601.webp", + "eve_040702.webp", + "eve_040801.webp", + "eve_050101.webp", + "eve_050201.webp", + "eve_050401.webp", + "eve_050501.webp", + "eve_050601.webp", + "eve_050704.webp", + "eve_050801.webp", + "eve_070101.webp", + "face_020101.webp", + "face_020102.webp", + "face_020103.webp", + "face_020104.webp", + "face_020105.webp", + "face_020106.webp", + "face_020107.webp", + "face_020108.webp", + "face_020109.webp", + "face_020110.webp", + "face_020111.webp", + "face_020112.webp", + "face_020113.webp", + "face_020114.webp", + "face_020115.webp", + "face_020116.webp", + "face_020117.webp", + "face_020118.webp", + "face_020121.webp", + "face_020122.webp", + "face_020123.webp", + "face_020124.webp", + "face_020125.webp", + "face_020126.webp", + "face_020127.webp", + "face_020128.webp", + "face_020129.webp", + "face_020130.webp", + "face_020131.webp", + "face_020132.webp", + "face_020133.webp", + "face_020134.webp", + "face_020135.webp", + "face_020136.webp", + "face_020137.webp", + "face_020141.webp", + "face_020142.webp", + "face_020143.webp", + "face_020144.webp", + "face_020145.webp", + "face_020146.webp", + "face_020147.webp", + "face_020148.webp", + "face_020149.webp", + "face_020150.webp", + "face_020151.webp", + "face_020152.webp", + "face_020153.webp", + "face_020154.webp", + "face_020155.webp", + "face_020156.webp", + "face_020157.webp", + "face_020158.webp", + "face_020159.webp", + "face_030101.webp", + "face_030102.webp", + "face_030103.webp", + "face_030104.webp", + "face_030105.webp", + "face_030107.webp", + "face_030121.webp", + "face_030122.webp", + "face_030123.webp", + "face_030124.webp", + "face_030125.webp", + "face_030127.webp", + "face_030129.webp", + "face_030131.webp", + "face_030132.webp", + "face_030141.webp", + "face_030142.webp", + "face_030143.webp", + "face_030144.webp", + "face_030145.webp", + "face_050101.webp", + "face_050102.webp", + "face_050103.webp", + "face_050104.webp", + "face_050105.webp", + "face_050106.webp", + "face_050107.webp", + "face_050108.webp", + "face_050111.webp", + "face_050112.webp", + "face_050113.webp", + "face_050116.webp", + "face_050121.webp", + "face_050122.webp", + "face_050123.webp", + "face_050124.webp", + "face_050125.webp", + "face_050126.webp", + "face_050127.webp", + "face_050128.webp", + "face_050129.webp", + "face_050130.webp", + "face_050131.webp", + "face_050132.webp", + "face_050134.webp", + "face_050135.webp", + "face_050136.webp", + "face_050137.webp", + "face_050141.webp", + "face_050142.webp", + "face_050143.webp", + "face_050144.webp", + "face_050145.webp", + "face_050146.webp", + "face_050147.webp", + "face_050148.webp", + "face_050150.webp", + "face_050151.webp", + "face_050152.webp", + "face_050201.webp", + "face_050202.webp", + "face_050203.webp", + "face_050204.webp", + "face_050205.webp", + "face_050206.webp", + "face_050210.webp", + "face_050212.webp", + "face_050213.webp", + "face_050214.webp", + "face_050215.webp", + "face_050216.webp", + "face_050221.webp", + "face_050222.webp", + "face_050223.webp", + "face_050224.webp", + "face_050225.webp", + "face_050226.webp", + "face_050229.webp", + "face_050230.webp", + "face_050232.webp", + "face_050234.webp", + "face_050235.webp", + "face_050237.webp", + "face_050241.webp", + "face_050242.webp", + "face_050243.webp", + "face_050244.webp", + "face_050245.webp", + "face_050246.webp", + "face_050249.webp", + "face_050250.webp", + "face_050252.webp", + "face_050301.webp", + "face_050302.webp", + "face_050303.webp", + "face_050304.webp", + "face_050305.webp", + "face_050306.webp", + "face_050307.webp", + "face_050308.webp", + "face_050309.webp", + "face_050310.webp", + "face_050311.webp", + "face_050313.webp", + "face_050314.webp", + "face_050315.webp", + "face_050316.webp", + "face_050317.webp", + "face_050321.webp", + "face_050322.webp", + "face_050323.webp", + "face_050324.webp", + "face_050325.webp", + "face_050326.webp", + "face_050327.webp", + "face_050328.webp", + "face_050329.webp", + "face_050330.webp", + "face_050331.webp", + "face_050332.webp", + "face_050333.webp", + "face_050334.webp", + "face_050335.webp", + "face_050336.webp", + "face_050337.webp", + "face_050338.webp", + "face_050341.webp", + "face_050342.webp", + "face_050343.webp", + "face_050344.webp", + "face_050345.webp", + "face_050346.webp", + "face_050347.webp", + "face_050348.webp", + "face_050349.webp", + "face_050350.webp", + "face_050351.webp", + "face_050352.webp", + "face_050353.webp", + "face_050441.webp", + "face_050442.webp", + "face_050443.webp", + "face_050445.webp", + "face_050446.webp", + "face_050447.webp", + "face_050451.webp", + "face_050452.webp", + "face_120101.webp", + "face_120102.webp", + "face_120103.webp", + "face_120104.webp", + "face_120105.webp", + "face_120106.webp", + "face_120107.webp", + "face_120108.webp", + "face_120111.webp", + "face_120112.webp", + "face_120113.webp", + "face_120121.webp", + "face_120122.webp", + "face_120123.webp", + "face_120124.webp", + "face_120125.webp", + "face_120126.webp", + "face_120127.webp", + "face_120128.webp", + "face_120131.webp", + "face_120132.webp", + "face_130101.webp", + "face_130102.webp", + "face_130103.webp", + "face_130104.webp", + "face_130105.webp", + "face_130106.webp", + "face_130107.webp", + "face_130108.webp", + "face_130109.webp", + "face_130110.webp", + "face_130111.webp", + "face_130112.webp", + "face_130113.webp", + "face_130121.webp", + "face_130122.webp", + "face_130123.webp", + "face_130124.webp", + "face_130125.webp", + "face_130126.webp", + "face_130127.webp", + "face_130128.webp", + "face_130129.webp", + "face_130130.webp", + "face_130131.webp", + "face_130132.webp", + "face_130201.webp", + "face_130202.webp", + "face_130203.webp", + "face_130204.webp", + "face_130205.webp", + "face_130206.webp", + "face_130207.webp", + "face_130208.webp", + "face_130209.webp", + "face_130211.webp", + "face_130212.webp", + "face_130213.webp", + "face_130221.webp", + "face_130222.webp", + "face_130223.webp", + "face_130224.webp", + "face_130225.webp", + "face_130226.webp", + "face_130227.webp", + "face_130228.webp", + "face_130229.webp", + "face_130230.webp", + "face_130231.webp", + "face_320101.webp", + "face_320102.webp", + "face_320103.webp", + "face_320104.webp", + "face_320105.webp", + "face_320106.webp", + "face_320107.webp", + "face_320108.webp", + "face_320109.webp", + "face_320121.webp", + "face_320122.webp", + "face_320123.webp", + "face_320124.webp", + "face_320125.webp", + "face_320127.webp", + "face_340101.webp", + "face_340102.webp", + "face_340103.webp", + "face_340104.webp", + "face_340105.webp", + "face_340106.webp", + "face_340107.webp", + "face_340108.webp", + "face_340109.webp", + "face_340110.webp", + "face_340111.webp", + "face_340112.webp", + "face_340113.webp", + "face_340114.webp", + "face_340115.webp", + "face_430101.webp", + "face_430102.webp", + "face_430103.webp", + "face_430104.webp", + "face_430105.webp", + "face_430106.webp", + "face_430107.webp", + "face_430108.webp", + "face_440101.webp", + "face_440102.webp", + "face_440103.webp", + "face_440104.webp", + "face_440105.webp", + "face_440106.webp", + "face_440107.webp", + "face_440108.webp", + "face_440109.webp", + "face_440110.webp", + "green.webp", + "hero.webp", + "l.webp", + "lane1.webp", + "light.webp", + "lock.webp", + "lr.webp", + "maba.webp", + "null.webp", + "other_0001.webp", + "other_0002.webp", + "other_0003.webp", + "other_0004.webp", + "r.webp", + "status.webp", + "tati_020101.webp", + "tati_020101a.webp", + "tati_020101y.webp", + "tati_020102.webp", + "tati_020102a.webp", + "tati_020103.webp", + "tati_020103y.webp", + "tati_020104.webp", + "tati_020104a.webp", + "tati_020104y.webp", + "tati_020105.webp", + "tati_020105a.webp", + "tati_020105y.webp", + "tati_020106.webp", + "tati_020107.webp", + "tati_020107a.webp", + "tati_020107y.webp", + "tati_020109.webp", + "tati_020110.webp", + "tati_020111.webp", + "tati_020111a.webp", + "tati_020113.webp", + "tati_020113a.webp", + "tati_020114.webp", + "tati_020115.webp", + "tati_020115y.webp", + "tati_020116.webp", + "tati_020116a.webp", + "tati_020117.webp", + "tati_020117a.webp", + "tati_020118.webp", + "tati_020121a.webp", + "tati_020122.webp", + "tati_020123.webp", + "tati_020123y.webp", + "tati_020124.webp", + "tati_020124a.webp", + "tati_020125.webp", + "tati_020125a.webp", + "tati_020125y.webp", + "tati_020126.webp", + "tati_020126y.webp", + "tati_020127.webp", + "tati_020129.webp", + "tati_020130.webp", + "tati_020131.webp", + "tati_020131a.webp", + "tati_020131y.webp", + "tati_020132.webp", + "tati_020133.webp", + "tati_020134.webp", + "tati_020135.webp", + "tati_020135a.webp", + "tati_020136.webp", + "tati_020137.webp", + "tati_020141.webp", + "tati_020141a.webp", + "tati_020142.webp", + "tati_020142a.webp", + "tati_020142y.webp", + "tati_020143.webp", + "tati_020143y.webp", + "tati_020144.webp", + "tati_020144a.webp", + "tati_020145.webp", + "tati_020145a.webp", + "tati_020145y.webp", + "tati_020146.webp", + "tati_020147.webp", + "tati_020149.webp", + "tati_020150.webp", + "tati_020151.webp", + "tati_020151a.webp", + "tati_020152.webp", + "tati_020153.webp", + "tati_020154.webp", + "tati_020157.webp", + "tati_020157a.webp", + "tati_020158.webp", + "tati_050101.webp", + "tati_050101a.webp", + "tati_050101y.webp", + "tati_050102.webp", + "tati_050102y.webp", + "tati_050103.webp", + "tati_050103a.webp", + "tati_050103y.webp", + "tati_050104.webp", + "tati_050104a.webp", + "tati_050105.webp", + "tati_050105a.webp", + "tati_050105y.webp", + "tati_050106.webp", + "tati_050106y.webp", + "tati_050107.webp", + "tati_050107a.webp", + "tati_050107y.webp", + "tati_050110.webp", + "tati_050111.webp", + "tati_050111a.webp", + "tati_050111y.webp", + "tati_050112.webp", + "tati_050113y.webp", + "tati_050116.webp", + "tati_050116a.webp", + "tati_050116y.webp", + "tati_050117.webp", + "tati_050121.webp", + "tati_050121a.webp", + "tati_050121y.webp", + "tati_050122.webp", + "tati_050122y.webp", + "tati_050123.webp", + "tati_050123a.webp", + "tati_050123y.webp", + "tati_050124.webp", + "tati_050124a.webp", + "tati_050124y.webp", + "tati_050125.webp", + "tati_050125a.webp", + "tati_050125y.webp", + "tati_050126.webp", + "tati_050126y.webp", + "tati_050127.webp", + "tati_050127a.webp", + "tati_050128.webp", + "tati_050131.webp", + "tati_050131a.webp", + "tati_050131y.webp", + "tati_050132.webp", + "tati_050134.webp", + "tati_050134y.webp", + "tati_050135.webp", + "tati_050135y.webp", + "tati_050136.webp", + "tati_050137.webp", + "tati_050137y.webp", + "tati_050141.webp", + "tati_050141a.webp", + "tati_050141y.webp", + "tati_050142.webp", + "tati_050142a.webp", + "tati_050142y.webp", + "tati_050143.webp", + "tati_050143a.webp", + "tati_050143y.webp", + "tati_050144.webp", + "tati_050144a.webp", + "tati_050144y.webp", + "tati_050145.webp", + "tati_050145a.webp", + "tati_050145y.webp", + "tati_050146.webp", + "tati_050146y.webp", + "tati_050147.webp", + "tati_050147y.webp", + "tati_050151.webp", + "tati_050151a.webp", + "tati_050151y.webp", + "tati_050152.webp", + "tati_050152y.webp", + "tati_050201.webp", + "tati_050201a.webp", + "tati_050201y.webp", + "tati_050202.webp", + "tati_050202a.webp", + "tati_050202y.webp", + "tati_050203.webp", + "tati_050203y.webp", + "tati_050204a.webp", + "tati_050204y.webp", + "tati_050205.webp", + "tati_050205a.webp", + "tati_050205y.webp", + "tati_050206.webp", + "tati_050206a.webp", + "tati_050206y.webp", + "tati_050210y.webp", + "tati_050215.webp", + "tati_050216.webp", + "tati_050221.webp", + "tati_050221a.webp", + "tati_050221y.webp", + "tati_050222.webp", + "tati_050222a.webp", + "tati_050222y.webp", + "tati_050223.webp", + "tati_050224a.webp", + "tati_050224y.webp", + "tati_050225.webp", + "tati_050225a.webp", + "tati_050225y.webp", + "tati_050226.webp", + "tati_050226a.webp", + "tati_050229.webp", + "tati_050230y.webp", + "tati_050232a.webp", + "tati_050234a.webp", + "tati_050237.webp", + "tati_050241.webp", + "tati_050241a.webp", + "tati_050241y.webp", + "tati_050242.webp", + "tati_050242a.webp", + "tati_050242y.webp", + "tati_050243.webp", + "tati_050243y.webp", + "tati_050244a.webp", + "tati_050244y.webp", + "tati_050245.webp", + "tati_050245a.webp", + "tati_050245y.webp", + "tati_050252.webp", + "tati_050252y.webp", + "tati_050301.webp", + "tati_050301a.webp", + "tati_050301y.webp", + "tati_050302.webp", + "tati_050303.webp", + "tati_050303y.webp", + "tati_050304.webp", + "tati_050304y.webp", + "tati_050305.webp", + "tati_050305a.webp", + "tati_050305y.webp", + "tati_050306.webp", + "tati_050306y.webp", + "tati_050307.webp", + "tati_050307a.webp", + "tati_050307y.webp", + "tati_050308.webp", + "tati_050309.webp", + "tati_050310.webp", + "tati_050311.webp", + "tati_050311y.webp", + "tati_050313.webp", + "tati_050314.webp", + "tati_050315.webp", + "tati_050316.webp", + "tati_050316y.webp", + "tati_050317.webp", + "tati_050321.webp", + "tati_050321a.webp", + "tati_050321y.webp", + "tati_050322.webp", + "tati_050322y.webp", + "tati_050323.webp", + "tati_050324.webp", + "tati_050324a.webp", + "tati_050324y.webp", + "tati_050325.webp", + "tati_050325a.webp", + "tati_050325y.webp", + "tati_050326.webp", + "tati_050327.webp", + "tati_050327y.webp", + "tati_050328.webp", + "tati_050329.webp", + "tati_050331.webp", + "tati_050331y.webp", + "tati_050332.webp", + "tati_050333.webp", + "tati_050334.webp", + "tati_050334a.webp", + "tati_050335.webp", + "tati_050337.webp", + "tati_050338.webp", + "tati_050338y.webp", + "tati_050341.webp", + "tati_050341a.webp", + "tati_050341y.webp", + "tati_050342.webp", + "tati_050343.webp", + "tati_050343y.webp", + "tati_050344.webp", + "tati_050345.webp", + "tati_050345a.webp", + "tati_050345y.webp", + "tati_050346.webp", + "tati_050347.webp", + "tati_050348.webp", + "tati_050349.webp", + "tati_050351.webp", + "tati_050351y.webp", + "tati_050352.webp", + "tati_050353.webp", + "tati_050353y.webp", + "tati_050441.webp", + "tati_050443.webp", + "tati_050443y.webp", + "tati_050445.webp", + "tati_050445a.webp", + "tati_050445y.webp", + "tati_050451.webp", + "tati_050451a.webp", + "tati_050452.webp", + "tati_050452y.webp", + "tati_120101.webp", + "tati_120101y.webp", + "tati_120102.webp", + "tati_120102y.webp", + "tati_120103.webp", + "tati_120103y.webp", + "tati_120104.webp", + "tati_120104y.webp", + "tati_120105.webp", + "tati_120105y.webp", + "tati_120106.webp", + "tati_120107.webp", + "tati_120107y.webp", + "tati_120108.webp", + "tati_120111.webp", + "tati_120111y.webp", + "tati_120112.webp", + "tati_120113.webp", + "tati_120113y.webp", + "tati_120121.webp", + "tati_120121y.webp", + "tati_120122.webp", + "tati_120123.webp", + "tati_120123y.webp", + "tati_120124.webp", + "tati_120125.webp", + "tati_120125y.webp", + "tati_120126.webp", + "tati_120127.webp", + "tati_120127y.webp", + "tati_120128.webp", + "tati_120131.webp", + "tati_120132.webp", + "tati_340101.webp", + "tati_340101a.webp", + "tati_340101y.webp", + "tati_340102.webp", + "tati_340102y.webp", + "tati_340103.webp", + "tati_340103y.webp", + "tati_340104.webp", + "tati_340104y.webp", + "tati_340105.webp", + "tati_340105a.webp", + "tati_340105y.webp", + "tati_340106.webp", + "tati_340106y.webp", + "tati_340107.webp", + "tati_340107y.webp", + "tati_340108.webp", + "tati_340108y.webp", + "tati_340109.webp", + "tati_340109y.webp", + "tati_340110.webp", + "tati_340110y.webp", + "tati_340111.webp", + "tati_340111y.webp", + "tati_340112.webp", + "tati_340112a.webp", + "tati_340112y.webp", + "tati_340113.webp", + "tati_340113y.webp", + "tati_340114.webp", + "tati_340114y.webp", + "tati_340115.webp", + "tati_430101.webp", + "tati_430101a.webp", + "tati_430101y.webp", + "tati_430102.webp", + "tati_430102a.webp", + "tati_430102y.webp", + "tati_430103.webp", + "tati_430103a.webp", + "tati_430103y.webp", + "tati_430104.webp", + "tati_430105.webp", + "tati_430105a.webp", + "tati_430105y.webp", + "tati_430106.webp", + "tati_430106a.webp", + "tati_430106y.webp", + "tati_430107.webp", + "tati_430107y.webp", + "tati_430108.webp", + "tati_430108a.webp", + "tati_430108y.webp", + "tati_440101.webp", + "tati_440101y.webp", + "tati_440103.webp", + "tati_440104.webp", + "tati_440105.webp", + "tati_440106.webp", + "tati_440108.webp", + "tati_z340101.webp", + "tati_z340102.webp", + "tati_z340103.webp", + "tati_z340104.webp", + "tati_z340105.webp", + "tati_z340106.webp", + "tati_z340107.webp", + "tati_z340108.webp", + "tati_z340109.webp", + "tati_z340110.webp", + "tati_z340111.webp", + "tati_z340112.webp", + "tati_z340113.webp", + "tati_z340114.webp", + "tati_z340115.webp", + "u.webp", + "ud.webp", + "udl.webp", + "udlr.webp", + "udr.webp", + "ul.webp", + "ulr.webp", + "unknow.webp", + "ur.webp", + "winskin.webp", + "winskin1.webp", + ], + tilesets: [ + "magictower.webp", + "5.webp", + "4.webp", + "3.webp", + "2.webp", + "1.webp", + "11.webp", + "6.webp", + "12.webp", + "Outside_B.webp", + "C4.webp", + "C3.webp", + "C2.webp", + "C1.webp", + "IconSet.webp", + "9.webp", + "8.webp", + "7.webp", + "10.webp", + "C5.webp", + ], + animates: ["hand", "jianji", "sword", "thunder", "yongchang", "zone"], + bgms: [ + "Asphodelus_Ceui.mp3", + "Blind_Alley.mp3", + "Crawler.mp3", + "theme.mp3", + ], + sounds: [ + "aiy010000010.mp3", + "aiy010000020.mp3", + "aiy010000030.mp3", + "aiy020000005.mp3", + "aiy020000010.mp3", + "aiy020000020.mp3", + "aiy020000030.mp3", + "aiy020000040.mp3", + "aiy020000050.mp3", + "aiy020000060.mp3", + "aiy020000070.mp3", + "aiy020000080.mp3", + "aiy020000090.mp3", + "aiy020000100.mp3", + "aiy020000110.mp3", + "aiy020000120.mp3", + "aiy020000130.mp3", + "aiy020000140.mp3", + "aiy020000150.mp3", + "aiy020000160.mp3", + "aiy020000170.mp3", + "aiy020000180.mp3", + "aiy310000010.mp3", + "aiy310000020.mp3", + "aiy310000030.mp3", + "aiy310000040.mp3", + "aiy310000050.mp3", + "aiy310000060.mp3", + "aiy310000070.mp3", + "aiy310000080.mp3", + "aiy310000090.mp3", + "aiy310000100.mp3", + "aiy310000110.mp3", + "aiy310000120.mp3", + "aiy310000130.mp3", + "aiy310000140.mp3", + "aiy310000150.mp3", + "aiy310000160.mp3", + "aiy310000170.mp3", + "aiy310000180.mp3", + "aiy310000190.mp3", + "aiy310000200.mp3", + "aiy310000210.mp3", + "aiy310000220.mp3", + "aiy310000230.mp3", + "aiy310000240.mp3", + "aiy310000250.mp3", + "aiy310000260.mp3", + "aiy310000280.mp3", + "aiy310000290.mp3", + "aiy310000300.mp3", + "aiy350000010.mp3", + "aiy350000020.mp3", + "aiy350000030.mp3", + "aiy350000040.mp3", + "aiy350000050.mp3", + "aiy350000060.mp3", + "aiy350000070.mp3", + "aiy350000080.mp3", + "aiy350000090.mp3", + "aiy350000100.mp3", + "aiy350000110.mp3", + "aiy350000120.mp3", + "aiy350000130.mp3", + "aiy350000140.mp3", + "aiy350000150.mp3", + "aiy350000160.mp3", + "aiy350000170.mp3", + "aiy350000180.mp3", + "aiy350000190.mp3", + "aiy350000200.mp3", + "aiy350000210.mp3", + "aiy350000220.mp3", + "aiy350000230.mp3", + "aiy710000010.mp3", + "aiy710000020.mp3", + "aiy710000030.mp3", + "aiy710000040.mp3", + "aiy710000050.mp3", + "aiy710000060.mp3", + "aiy710000070.mp3", + "aiy710000080.mp3", + "aiy710000090.mp3", + "aiy710000100.mp3", + "aiy710000110.mp3", + "aiy710000120.mp3", + "aiy710000130.mp3", + "aiy820000010.mp3", + "aiy820000020.mp3", + "attack.mp3", + "bomb.mp3", + "cancel.mp3", + "centerFly.mp3", + "confirm.mp3", + "cursor.mp3", + "door.mp3", + "equip.mp3", + "error.mp3", + "floor.mp3", + "gem.mp3", + "icePickaxe.mp3", + "item.mp3", + "jingbao.mp3", + "jump.mp3", + "load.mp3", + "open_ui.mp3", + "pickaxe.mp3", + "recovery.mp3", + "save.mp3", + "shop.mp3", + "zone.mp3", + ], + fonts: ["HATTEN", "number", "pala", "simhei"], + nameMap: { + 确定: "confirm.mp3", + 取消: "cancel.mp3", + 操作失败: "error.mp3", + 光标移动: "cursor.mp3", + 打开界面: "open_ui.mp3", + 读档: "load.mp3", + 存档: "save.mp3", + 获得道具: "item.mp3", + 回血: "recovery.mp3", + 炸弹: "bomb.mp3", + 飞行器: "centerFly.mp3", + 开关门: "door.mp3", + 上下楼: "floor.mp3", + 跳跃: "jump.mp3", + 破墙镐: "pickaxe.mp3", + 破冰镐: "icePickaxe.mp3", + 宝石: "gem.mp3", + 阻激夹域: "zone.mp3", + 穿脱装备: "equip.mp3", + 背景音乐: "bgm.mp3", + 攻击: "attack.mp3", + 背景图: "bg.webp", + 商店: "shop.mp3", + 领域: "zone", + }, + levelChoose: null, + equipName: ["武器", "武器", "护具", "饰品", "饰品"], + startBgm: "theme.mp3", + styles: { + startBackground: "project/images/background.webp", + startVerticalBackground: "project/images/backgroundvertical.webp", + startLogoStyle: "color: black", + startButtonsStyle: + "background-color: #000000; opacity: 0.45; color: #FFFFFF; border: #FFFFFF 2px solid; caret-color: #FFD700;", + statusLeftBackground: "url(project/materials/ground.webp) repeat", + statusTopBackground: "url(project/materials/ground.webp) repeat", + toolsBackground: "url(project/materials/ground.webp) repeat", + floorChangingStyle: "background-color: black; color: white", + statusBarColor: [255, 255, 255, 1], + borderColor: [204, 204, 204, 1], + selectColor: [255, 215, 0, 1], + font: "pala", + }, + splitImages: null, + }, + firstData: { + title: "秽翼的尤斯蒂娅", + name: "Eustia", + version: "鸽子窝造塔小队", + floorId: "street01", + hero: { + image: "hero.webp", + animate: false, + name: "Caim", + lv: 1, + hpmax: 9999, + hp: 1000, + manamax: -1, + mana: 0, + atk: 100, + def: 100, + mdef: 0, + speed: 0, + money: 0, + exp: 0, + equipment: [], + items: { + constants: {}, + tools: {}, + equips: {}, + }, + loc: { + direction: "up", + x: 5, + y: 11, + }, + flags: { + itemDetail: true, + useBetweenLight: true, + }, + followers: [], + steps: 0, + }, + startCanvas: [ + { + type: "comment", + text: "在这里可以用事件来自定义绘制标题界面的背景图等", + }, + { + type: "comment", + text: "也可以直接切换到其他楼层(比如某个开始剧情楼层)进行操作。", + }, + { + type: "previewUI", + action: [ + { + type: "fillRect", + x: 0, + y: 0, + width: "core._PX_ || core.__PIXELS__", + height: "core._PY_ || core.__PIXELS__", + style: [82, 82, 82, 1], + }, + { + type: "setAttribute", + align: "center", + }, + { + type: "fillBoldText", + x: "(core._PX_ || core.__PIXELS__) / 2", + y: 80, + style: [255, 255, 255, 1], + strokeStyle: [0, 0, 0, 1], + font: "bold 40px Verdana", + text: "${core.firstData.title}", + }, + ], + }, + { + type: "setValue", + name: "flag:selection", + value: "0", + }, + { + type: "comment", + text: "在右下方自绘一个对话框进行显示选择项", + }, + { + type: "previewUI", + action: [ + { + type: "fillRect", + x: 230, + y: 250, + width: 150, + height: 142, + radius: 10, + style: [50, 54, 159, 0.85], + }, + { + type: "strokeRect", + x: 230, + y: 250, + width: 150, + height: 142, + radius: 10, + style: [255, 255, 255, 1], + lineWidth: 2, + }, + { + type: "fillBoldText", + x: 305, + y: 290, + style: [255, 255, 255, 1], + font: "bold 25px Verdana", + text: "开始游戏", + }, + { + type: "fillBoldText", + x: 305, + y: 330, + font: "bold 25px Verdana", + text: "读取存档", + }, + { + type: "fillBoldText", + x: 305, + y: 370, + font: "bold 25px Verdana", + text: "回放录像", + }, + ], + }, + { + type: "while", + condition: "1", + data: [ + { + type: "drawSelector", + image: "winskin.webp", + code: 1, + x: 245, + y: "261 + 40*flag:selection", + width: 120, + height: 40, + }, + { + type: "wait", + data: [ + { + case: "keyboard", + keycode: "13,32", + break: true, + action: [ + { + type: "switch", + condition: "flag:selection", + caseList: [ + { + case: "0", + action: [ + { + type: "comment", + text: "在“开始游戏”确定", + }, + { + type: "break", + n: 1, + }, + ], + }, + { + case: "1", + action: [ + { + type: "comment", + text: "在“读取存档”确定", + }, + { + type: "callLoad", + }, + ], + }, + { + case: "2", + action: [ + { + type: "comment", + text: "在“回放录像”确定", + }, + { + type: "if", + condition: "(!core.isReplaying())", + true: [ + { + type: "function", + function: + "function(){\ncore.chooseReplayFile()\n}", + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + case: "keyboard", + keycode: "38", + break: true, + action: [ + { + type: "comment", + text: "光标上键", + }, + { + type: "setValue", + name: "flag:selection", + value: "(flag:selection + 2) % 3", + }, + ], + }, + { + case: "keyboard", + keycode: "40", + break: true, + action: [ + { + type: "comment", + text: "光标下键", + }, + { + type: "setValue", + name: "flag:selection", + value: "(flag:selection + 1) % 3", + }, + ], + }, + { + case: "mouse", + px: [245, 365], + py: [261, 300], + break: true, + action: [ + { + type: "comment", + text: "点击“开始游戏”", + }, + { + type: "break", + n: 1, + }, + ], + }, + { + case: "mouse", + px: [245, 365], + py: [301, 340], + break: true, + action: [ + { + type: "comment", + text: "点击“读取存档”", + }, + { + type: "callLoad", + }, + ], + }, + { + case: "mouse", + px: [245, 365], + py: [341, 380], + break: true, + action: [ + { + type: "comment", + text: "点击“播放录像”", + }, + { + type: "if", + condition: "(!core.isReplaying())", + true: [ + { + type: "function", + function: "function(){\ncore.chooseReplayFile()\n}", + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + type: "setValue", + name: "flag:selection", + value: "null", + }, + { + type: "drawSelector", + code: 1, + }, + { + type: "clearMap", + }, + { + type: "function", + function: "function(){\ncore.control.checkBgm()\n}", + }, + { + type: "if", + condition: "(main.levelChoose.length == 0)", + true: [ + { + type: "comment", + text: "没有难度选择:直接开始游戏", + }, + ], + false: [ + { + type: "comment", + text: "难度选择:作为样例,这里只提供了一个显示选择项。", + }, + { + type: "function", + function: + 'function(){\nvar choices = [];\nmain.levelChoose.forEach(function (one) {\n\tchoices.push({\n\t\t"text": one.title || \'\',\n\t\t"action": [\n\t\t\t{ "type": "function", "function": "function() { core.status.hard = \'" + (one.name || \'\') + "\'; }" }\n\t\t]\n\t});\n})\ncore.insertAction({ "type": "choices", "choices": choices });\n}', + }, + { + type: "comment", + text: "你也可以仿照上面的样例进行自己创建等待用户操作来处理不同的难度分歧。\n如需自己处理,请设置 core.status.hard \n(例如,自定义js脚本:core.status.hard = 'Easy' )", + }, + ], + }, + { + type: "clearMap", + }, + { + type: "comment", + text: "接下来会执行startText中的事件", + }, + { + type: "comment", + text: "状态栏默认处于隐藏状态;可以使用“显示状态栏”事件进行显示。", + }, + ], + startText: [ + { + type: "setValue", + name: "item:book", + value: "1", + }, + { + type: "setValue", + name: "item:fly", + value: "1", + }, + ], + shops: [ + { + id: "shop1", + text: "\t[贪婪之神,moneyShop]勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:", + textInList: "1F金币商店", + mustEnable: false, + disablePreview: false, + choices: [ + { + text: "生命+800", + need: "status:money>=20+2*flag:shop1", + action: [ + { + type: "comment", + text: "新版商店中需要手动扣减金币和增加访问次数", + }, + { + type: "setValue", + name: "status:money", + operator: "-=", + value: "20+2*flag:shop1", + }, + { + type: "setValue", + name: "flag:shop1", + operator: "+=", + value: "1", + }, + { + type: "setValue", + name: "status:hp", + operator: "+=", + value: "800", + }, + ], + }, + { + text: "攻击+4", + need: "status:money>=20+2*flag:shop1", + action: [ + { + type: "comment", + text: "新版商店中需要手动扣减金币和增加访问次数", + }, + { + type: "setValue", + name: "status:money", + operator: "-=", + value: "20+2*flag:shop1", + }, + { + type: "setValue", + name: "flag:shop1", + operator: "+=", + value: "1", + }, + { + type: "setValue", + name: "status:atk", + operator: "+=", + value: "4", + }, + ], + }, + ], + }, + { + id: "shop2", + text: "\t[贪婪之神,expShop]勇敢的武士啊, 给我一定经验就可以:", + textInList: "1F经验商店", + mustEnable: false, + disablePreview: true, + choices: [ + { + text: "等级+1(100经验)", + need: "status:exp>=100", + action: [ + { + type: "setValue", + name: "status:exp", + operator: "-=", + value: "100", + }, + { + type: "setValue", + name: "status:lv", + operator: "+=", + value: "1", + }, + { + type: "setValue", + name: "status:hp", + operator: "+=", + value: "1000", + }, + ], + }, + ], + }, + { + id: "itemShop", + item: true, + textInList: "道具商店", + use: "money", + mustEnable: false, + choices: [ + { + id: "yellowKey", + number: 10, + money: "10", + sell: "5", + }, + ], + }, + { + id: "keyShop", + textInList: "回收钥匙商店", + mustEnable: false, + commonEvent: "回收钥匙商店", + }, + ], + levelUp: [ + { + need: "0", + title: "", + action: [ + { + type: "comment", + text: "此处是初始等级,只需填写称号", + }, + ], + }, + { + need: "20", + title: "", + action: [ + { + type: "setValue", + name: "status:atk", + operator: "+=", + value: "10", + }, + { + type: "setValue", + name: "status:def", + operator: "+=", + value: "10", + }, + ], + }, + { + need: "40", + title: "", + action: [ + { + type: "tip", + text: "恭喜升级", + }, + ], + }, + ], + }, + values: { + lavaDamage: 100, + poisonDamage: 10, + weakValue: 20, + redGem: 3, + blueGem: 3, + greenGem: 5, + redPotion: 100, + bluePotion: 250, + yellowPotion: 500, + greenPotion: 800, + breakArmor: 0.9, + counterAttack: 0.1, + purify: 3, + hatred: 2, + animateSpeed: 300, + moveSpeed: 100, + statusCanvasRowsOnMobile: 3, + floorChangeTime: 500, + }, + flags: { + statusBarItems: [ + "enableFloor", + "enableLv", + "enableHP", + "enableMana", + "enableAtk", + "enableDef", + "enableMDef", + "enableMoney", + "enableExp", + "enableKeys", + "enablePZF", + "enableSkill", + ], + autoScale: true, + extendToolbar: false, + flyNearStair: false, + flyRecordPosition: true, + itemFirstText: false, + equipboxButton: false, + enableAddPoint: false, + enableNegativeDamage: false, + betweenAttackMax: false, + useLoop: true, + startUsingCanvas: false, + statusCanvas: false, + enableEnemyPoint: true, + enableGentleClick: true, + ignoreChangeFloor: true, + canGoDeadZone: false, + enableMoveDirectly: true, + enableRouteFolding: true, + disableShopOnDamage: false, + blurFg: true, + hideLeftStatusBar: false, + }, +}; +>>>>>>> story diff --git a/project/events.js b/project/events.js index 355629a..3ec338a 100644 --- a/project/events.js +++ b/project/events.js @@ -1,4365 +1,11596 @@ -var events_c12a15a8_c380_4b28_8144_256cba95f760 = { - commonEvent: { - 加点事件: [ - { - type: "comment", - text: "通过传参,flag:arg1 表示当前应该的加点数值", - }, - { - type: "choices", - choices: [ - { - text: "攻击+${1*flag:arg1}", - action: [ - { - type: "setValue", - name: "status:atk", - operator: "+=", - value: "1*flag:arg1", - }, - ], - }, - { - text: "防御+${2*flag:arg1}", - action: [ - { - type: "setValue", - name: "status:def", - operator: "+=", - value: "2*flag:arg1", - }, - ], - }, - { - text: "生命+${200*flag:arg1}", - action: [ - { - type: "setValue", - name: "status:hp", - operator: "+=", - value: "200*flag:arg1", - }, - ], - }, - ], - }, - ], - 回收钥匙商店: [ - { - type: "comment", - text: "此事件在全局商店中被引用了(全局商店keyShop)", - }, - { - type: "comment", - text: "解除引用前勿删除此事件", - }, - { - type: "comment", - text: "玩家在快捷列表(V键)中可以使用本公共事件", - }, - { - type: "while", - condition: "1", - data: [ - { - type: "choices", - text: "\t[商人,trader]你有多余的钥匙想要出售吗?", - choices: [ - { - text: "黄钥匙(10金币)", - color: [255, 255, 0, 1], - action: [ - { - type: "if", - condition: "item:yellowKey >= 1", - true: [ - { - type: "setValue", - name: "item:yellowKey", - operator: "-=", - value: "1", - }, - { - type: "setValue", - name: "status:money", - operator: "+=", - value: "10", - }, - ], - false: ["\t[商人,trader]你没有黄钥匙!"], - }, - ], - }, - { - text: "蓝钥匙(50金币)", - color: [0, 0, 255, 1], - action: [ - { - type: "if", - condition: "item:blueKey >= 1", - true: [ - { - type: "setValue", - name: "item:blueKey", - operator: "-=", - value: "1", - }, - { - type: "setValue", - name: "status:money", - operator: "+=", - value: "50", - }, - ], - false: ["\t[商人,trader]你没有蓝钥匙!"], - }, - ], - }, - { - text: "离开", - action: [ - { - type: "exit", - }, - ], - }, - ], - }, - ], - }, - ], - chapter0: [ - { - type: "playBgm", - name: "Crawler.mp3", - keep: true, - }, - { - type: "setText", - time: 50, - }, - { - type: "changebg", - img1: "", - memory1: false, - img2: "", - memory2: false, - time: 30, - style: "引入", - }, - { - type: "over", - text: "人生不如意事,十常居七八。", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "世间的万物皆被装缀着不公的色彩。", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "没错,就像——", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "十几年前的那一天,", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "在都市的角落,同许多的生命共同消逝一般。", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "没错,就像——", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "十几年前的那天起以来,", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "无数的生命被那无法逃脱的污泥囚禁一样。", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "人生不如意事,十常居七八。", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "世间的万物皆被装缀着不公的色彩。", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "没错,就像——", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "over", - text: "如今,这一天。", - image: "", - memory: false, - time: 50, - hidetime: 30, - sound: "", - textColor: [255, 255, 255, 1], - boldColor: [0, 0, 0, 1], - font: "bold 48px Verdana", - }, - { - type: "changebg", - img1: "", - memory1: false, - img2: "other_0001.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "other_0001.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "这些天,街道不曾下雨。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0001.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "所以,那浸湿地面的,定是那些女孩们流落的鲜血无疑。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0001.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "我蹲在充斥着铁锈味般恶臭的小巷中,悠闲地如是想着。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "other_0001.webp", - memory1: false, - img2: "bg_3563.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "bg_3563.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "扑哧。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3563.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "耳旁再次响起象征着某个女孩子死去的声音。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3563.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "再一次——", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3563.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "再一次。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3563.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "女子们被肢解成单纯的肉块。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3563.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "我任由流下的血浸满全身,屏住自己的呼吸。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3563.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "祈求自己能拥有从猎人手中逃脱的幸运。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3563.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "扑哧。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "bg_3563.webp", - memory1: false, - img2: "other_0002.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "other_0002.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "直到刚才,我们还坐在去往娼馆的马车的路上。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0002.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "而在这之中的某些人,已经不在这个世上了。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0002.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "不,应该把“某些”换成“几乎所有”才更为恰当吧。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0002.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "恐怕,不久之后我也会变成小巷中血腥的装饰品。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0002.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "我是为了得到这种死法,才辛苦苟活至今的吗?", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0002.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "来个人告诉我啊——", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0002.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "谁都好。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0002.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "来人啊!!", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "other_0002.webp", - memory1: false, - img2: "other_0001.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "other_0001.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "少女", - time: 30, - wait: 1000, - sound: "aiy010000010.mp3", - text: "「呃······!?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "other_0001.webp", - memory1: false, - img2: "other_0003.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "other_0003.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "漆黑的物体充斥了我的整个视野", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0003.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "我很快意识到,那是只很大的脚。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "other_0003.webp", - memory1: false, - img2: "", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "必须要出声求救。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "", - memory1: false, - img2: "other_0003.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "other_0003.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "可是,耳中却只能听到自己的牙关不停交战的声音。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0003.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 50, - wait: 1000, - sound: "", - text: "我是如此的无助。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "other_0003.webp", - memory1: false, - img2: "", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "逃跑也好,道歉也罢。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "就连抬头看一眼将要杀掉我的人的面孔都做不到。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "少女", - time: 30, - wait: 2000, - sound: "aiy010000020.mp3", - text: "「······被杀」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "会被杀。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "会被杀!!", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "来自内心深处的冰冷预感,渐渐地在体内蔓延开来。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "少女", - time: 30, - wait: 1000, - sound: "aiy010000030.mp3", - text: "「不,不要······」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "playBgm", - name: "Blind_Alley.mp3", - keep: true, - }, - { - type: "changebg", - img1: "", - memory1: false, - img2: "bg_6004.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "bg_6004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "浮游都市,《诺瓦斯·艾蒂尔》。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_6004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "《特别受灾地区》——", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_6004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "通称,《牢狱》", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_6004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "是被险峻的峭壁环绕,与世隔绝的,都市的最底部。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_6004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000010.mp3", - text: "「放开我!」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_6004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000020.mp3", - text: "「我只是在帮那个女人而已!」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "bg_6004.webp", - memory1: false, - img2: "other_0004.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "other_0004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000030.mp3", - text: "「你们没听到吗!?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000040.mp3", - text: "「她是被受骗才会被卖到娼馆来的」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "other_0004.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000050.mp3", - text: "「用肮脏的手段把钱借给她父母的,就是你们这些家伙吧!?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "other_0004.webp", - memory1: false, - img2: "bg_3601.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000060.mp3", - text: "「给我说些什么啊」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000010.mp3", - text: "「这些话等到了娼馆再说吧」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000020.mp3", - text: "「我来抓你,只是受雇于人而已」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "bg_3601.webp", - memory1: false, - img2: "bg_3531.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "我走进娼馆《莉莉乌姆》的接待室。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "正在桌旁整理账簿的奥兹停下手头的工作,抬起头向我看来。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000010.mp3", - text: "「这不是凯伊姆先生吗,辛苦了」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000020.mp3", - text: "「委托已经完成了吗?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000030.mp3", - text: "「啊啊,是这家伙没错吧」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "奥兹用只要接触到就能杀人般的眼神在男人脸上搜过。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000030.mp3", - text: "「没错,就是这个人」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000040.mp3", - text: "「是么」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000070.mp3", - text: "「你,你们要对我做什么」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000040.mp3", - text: "「······」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "奥兹用一个眼神,就让男人闭上了嘴。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "然后,向我这边转过身来。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000050.mp3", - text: "「抱歉啊,总是麻烦你去做这些无聊的事」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000060.mp3", - text: "「都怪我们这边的年轻人太没用」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000050.mp3", - text: "「客套话就免了」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000070.mp3", - text: "「这还真是失礼了」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000080.mp3", - text: "「喂,来个人」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "光头男人", - time: 30, - wait: 1000, - sound: "aiy820000010.mp3", - text: "「是」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000090.mp3", - text: "「凯伊姆先生做完工作回来了」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "光头男人", - time: 30, - wait: 1000, - sound: "aiy820000020.mp3", - text: "「是,是,那个······」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000100.mp3", - text: "「我是要你拿些酒来,这个蠢材!」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "喀!", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "奥兹扔出的烟灰缸砸中了手下的额头。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "鲜血四溅。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000060.mp3", - text: "「不用这么麻烦」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000070.mp3", - text: "「我接下来要去《菲诺列塔》」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000110.mp3", - text: "「喔唷」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000120.mp3", - text: "「既然如此,我就不留您在这里喝难饮的劣质酒了」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "奥兹斜眼看着正捂住额头呻吟的手下,轻描淡写地说道。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000080.mp3", - text: "「用这些钱去买药」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "我将几枚铜钱仍在那个手下的身前。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000130.mp3", - text: "「凯伊姆先生,不用对他们这么好」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000090.mp3", - text: "「无妨」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000100.mp3", - text: "「话说回来,那个要落跑的女人呢?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000140.mp3", - text: "「我把她交给那些年轻人了,现在应该正在体会人生的严苛吧」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000150.mp3", - text: "「正好,趁此机会凯伊姆先生也来享受一番如何?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000080.mp3", - text: "「你,你们这些家伙,要对她做什么!?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "咣!", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "奥兹给了他一拳。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "一击即倒。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "喀,咚,咯!", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "奥兹毫不留情地向男人的脸上踩去。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000090.mp3", - text: "「咕······呃咳······」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "折断的牙齿伴着血泡被吐出。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "这份白色在鲜红色的液体中格外显眼。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000100.mp3", - text: "「你们以为做出这种事······卫兵会坐视不理吗······」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000160.mp3", - text: "「啊啊,不会坐视不理的」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000170.mp3", - text: "「应该会拿出你的钱包,和我们商量如何瓜分吧」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000110.mp3", - text: "「那,那种事······」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "这在牢狱是理所当然的事。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 2000, - sound: "aiy350000180.mp3", - text: "「怎么,头一回来牢狱么?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "男人点了点头。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000190.mp3", - text: "「为了被骗的女人而来到牢狱,真是个规矩人啊」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000200.mp3", - text: "「······前提是,被骗的人不是你」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000120.mp3", - text: "「你说······我被骗了?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "年轻人", - time: 30, - wait: 1000, - sound: "aiy710000130.mp3", - text: "「那,那是怎么回事!?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000210.mp3", - text: "「不用急,今天晚上会好好告诉你的」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "奥兹抓起男人的脸。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "为引诱客人的怜悯之心而装纯,是娼妇的惯用手段。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "双亲被骗而借钱,结果作为抵押而将自己卖到这里,这是典型的说法。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "如果只是头脑发热而成为常客也就罢了,这次的男人热血过头,居然想出了要带女人私奔的计划。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "虽然女人半开玩笑地予以拒绝,但不知天高地厚的这家伙还是拉着她逃跑了。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "不过,想要逃脱追击本来就是不可能的任务。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "但即便如此,这种事情还是会一再的出现。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "说谎的女人和被骗的男人。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "在娼馆街,这是令人看到生厌的日常的风景。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000110.mp3", - text: "「我要走了」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000220.mp3", - text: "「好的,下次再麻烦您」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "奥兹", - time: 30, - wait: 1000, - sound: "aiy350000230.mp3", - text: "「之后吉克先生会将谢礼交给您的」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "aiy310000120.mp3", - text: "「啊啊」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "我背向奥兹走出娼馆。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「······?」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "bg_3531.webp", - memory1: false, - img2: "bg_3601.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "从远方传来微弱的歌声。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "是关卡广场的方向。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "对了。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "今天有觐见圣女的仪式。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "当代的圣女伊莲——", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "俗称《盲眼之圣女》,据说即使在历代的圣女中,人气也是数一数二的。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "广场上的人估计相当多吧。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "虽然我也想去看看她长什么样,不过要在人潮中挤来挤去就免了。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "还是老老实实去菲诺列塔喝烧酒吧。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "正当我这样想着的时候,一个身影自小巷的那头走来。", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "bg_3601.webp", - memory1: false, - img2: "bg_3531.webp", - memory2: false, - time: 30, - style: "场景切换", - }, - { - type: "cgtext", - bg: "bg_3531.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「艾莉斯」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "bg_3531.webp", - memory1: false, - img2: "", - memory2: false, - time: 30, - style: "引出", - }, - { - type: "comment", - text: "好多立绘,先更这点(吐槽一下)", - }, - ], - chapter01: [ - { - type: "changebg", - img1: "", - memory1: false, - img2: "bg_3601.webp", - memory2: false, - time: 30, - style: "引入", - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020106.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「啊,凯伊姆」", - bodyList: [ - { - name: "", - px: 100, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020141.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「正好,我还想要去找你呢」", - bodyList: [ - { - name: "tati_020141.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020157.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「没想到凯伊姆会主动出现······这是命运吗?」", - bodyList: [ - { - name: "tati_020157.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「显然不是吧」", - bodyList: [ - { - name: "tati_020157.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020107.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「啊,是么」", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "艾莉斯挑了挑整齐的双眉,微微地哼了一声。", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "虽然是个相当引人注目的美人,但她这个将亲切儿子丢入无底深渊的性格,为自己扣了不少的分", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "给人印象最深的,就是那潭水般的双瞳。", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "", - time: 30, - wait: 1000, - sound: "", - text: "在漆黑的瞳孔中,完全看不出感情的波动。", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020157.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「喜欢我的眼睛吗?」", - bodyList: [ - { - name: "tati_020157.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020157.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「如果想要的话就给你吧?」", - bodyList: [ - { - name: "tati_020157.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「用不着」", - bodyList: [ - { - name: "tati_020157.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020111.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「阿拉,可惜」", - bodyList: [ - { - name: "tati_020111.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「那么,找我有什么事」", - bodyList: [ - { - name: "tati_020111.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020101.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「梅尔特的钱好像被偷了」", - bodyList: [ - { - name: "tati_020101.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「钱被偷了?都几岁了还这么没用」", - bodyList: [ - { - name: "tati_020101.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020107.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「不要对我说啊」", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「那家伙,该不会说要让我去抓那个小偷吧?」", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020157.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「就是这样」", - bodyList: [ - { - name: "tati_020157.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「笨蛋吗」", - bodyList: [ - { - name: "tati_020157.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「如果是小钱的话,就当做是买个教训吧」", - bodyList: [ - { - name: "tati_020157.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020125.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「说起来,被盗的是这个月的上纳金」", - bodyList: [ - { - name: "tati_020125.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「你说什么?」", - bodyList: [ - { - name: "tati_020125.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020121.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「用这些钱买教训,也太过奢侈了呢」", - bodyList: [ - { - name: "tati_020121.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「知道了,我去找」", - bodyList: [ - { - name: "tati_020121.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「小偷的特征呢」", - bodyList: [ - { - name: "tati_020121.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020105.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「男孩子」", - bodyList: [ - { - name: "tati_020105.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020103.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「······而且,背后有翅膀」", - bodyList: [ - { - name: "tati_020103.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020141.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「虽然姑且是藏在身后,但是仔细观察的话是很明显的」", - bodyList: [ - { - name: "tati_020141.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「羽化病吗」", - bodyList: [ - { - name: "tati_020141.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020105.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「那些人可是毫不留情的,所以即使是为了那个孩子,也要赶快抓到他」", - bodyList: [ - { - name: "tati_020105.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「注意到他逃窜的方向了吗?」", - bodyList: [ - { - name: "tati_020105.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020105.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「广场那边」", - bodyList: [ - { - name: "tati_020105.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020107.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「虽然刚才《不蚀金锁》的人去追了,不过多半是······」", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「偏偏还是广场吗」", - bodyList: [ - { - name: "tati_020107.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "face_020141.webp", - px: -300, - }, - name: "艾莉斯", - time: 30, - wait: 1000, - sound: "", - text: "「今天是觐见圣女大人的日子」", - bodyList: [ - { - name: "tati_020145.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「我知道」", - bodyList: [ - { - name: "tati_020145.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "cgtext", - bg: "bg_3601.webp", - memory: false, - WindowSkin: false, - head: { - name: "", - px: -300, - }, - name: "凯伊姆", - time: 30, - wait: 1000, - sound: "", - text: "「尽量找找看就好」", - bodyList: [ - { - name: "tati_020145.webp", - px: 600, - filter: false, - }, - ], - }, - { - type: "changebg", - img1: "bg_3601.webp", - memory1: false, - img2: "", - memory2: false, - time: 30, - style: "引出", - }, - ], - chapter02: null, - chapter03: null, - chapter04: null, - chapter05: null, - 强制横屏: [ - { - type: "if", - condition: "((!main.replayChecking )&&(!core.isReplaying()))", - true: [ - { - type: "if", - condition: - '((screen.orientation || {}).type ||\n screen.mozOrientation ||\n screen.msOrientation!=="landscape-primary")', - true: [ - { - type: "if", - condition: "(!core.platform.isPC)", - true: [ - { - type: "confirm", - default: true, - text: "手机用户横屏体验更佳,是否切换", - yes: [ - { - type: "function", - function: - "function(){\ncore.triggerFullscreen(true)\n}", - }, - ], - no: [], - }, - ], - }, - ], - }, - ], - }, - ], - }, - CommonEventTemplate: { - 检测音乐如果没有开启则系统提示开启: [ - { - type: "if", - condition: "!core.musicStatus.bgmStatus", - true: ["\t[系统提示]你当前音乐处于关闭状态,本塔开音乐游戏效果更佳"], - false: [], - }, - ], - 仿新新魔塔一次性商人: [ - { - type: "if", - condition: "switch:A", - true: [ - "\t[行商,trader]\b[this]这是购买我的道具后我给玩家的提示。", - { - type: "comment", - text: "下一条指令可视情况使用或不使用", - }, - { - type: "hide", - remove: true, - time: 250, - loc: [[]], - }, - ], - false: [ - { - type: "confirm", - text: "我有3把黄钥匙,\n你出50金币就卖给你。", - yes: [ - { - type: "if", - condition: "status:money>=50", - true: [ - { - type: "setValue", - name: "status:money", - operator: "-=", - value: "50", - }, - { - type: "setValue", - name: "item:yellowKey", - operator: "+=", - value: "3", - }, - { - type: "playSound", - name: "确定", - stop: true, - }, - { - type: "setValue", - name: "switch:A", - value: "true", - }, - ], - false: [ - { - type: "playSound", - name: "操作失败", - }, - "\t[行商,trader]\b[this]你的金币不足!", - ], - }, - ], - no: [], - }, - ], - }, - ], - 全地图选中一个点: [ - { - type: "comment", - text: "全地图选中一个点,需要用鼠标或触屏操作", - }, - { - type: "setValue", - name: "temp:X", - value: "status:x", - }, - { - type: "setValue", - name: "temp:Y", - value: "status:y", - }, - { - type: "tip", - text: "再次点击闪烁位置确认", - }, - { - type: "while", - condition: "true", - data: [ - { - type: "drawSelector", - image: "winskin.webp", - code: 1, - x: "32*temp:X", - y: "32*temp:Y", - width: 32, - height: 32, - }, - { - type: "wait", - }, - { - type: "if", - condition: "(flag:type === 1)", - true: [ - { - type: "if", - condition: "((temp:X===flag:x)&&(temp:Y===flag:y))", - true: [ - { - type: "break", - n: 1, - }, - ], - }, - { - type: "setValue", - name: "temp:X", - value: "flag:x", - }, - { - type: "setValue", - name: "temp:Y", - value: "flag:y", - }, - ], - }, - ], - }, - { - type: "drawSelector", - code: 1, - }, - { - type: "comment", - text: "流程进行到这里可以对[X,Y]点进行处理,比如", - }, - { - type: "closeDoor", - id: "yellowDoor", - loc: ["temp:X", "temp:Y"], - }, - ], - 多阶段Boss战斗: [ - { - type: "comment", - text: "多阶段boss,请直接作为战后事件使用", - }, - { - type: "setValue", - name: "switch:A", - operator: "+=", - value: "1", - }, - { - type: "switch", - condition: "switch:A", - caseList: [ - { - case: "1", - action: [ - { - type: "setBlock", - number: "redSlime", - loc: [[]], - }, - "\t[2阶段boss,redSlime]\b[this]你以为你已经打败我了吗?没听说过史莱姆有九条命吗?", - ], - }, - { - case: "2", - action: [ - { - type: "setBlock", - number: "blackSlime", - loc: [[]], - }, - "\t[3阶段boss,blackSlime]\b[this]不能消灭我的,只会让我更强大!", - ], - }, - { - case: "3", - action: [ - { - type: "setBlock", - number: "slimelord", - loc: [[]], - }, - "\t[4阶段boss,slimelord]\b[this]我还能打!", - ], - }, - { - case: "4", - action: ["\t[4阶段boss,slimelord]我一定会回来的!"], - }, - ], - }, - ], - 光标修改: [ - { - type: "changeMouse", - icon: "sword0", - div: "gameGroup", - translate: [0, 0], - scale: [1, 1], - angle: 0, - px: 0, - py: 0, - }, - { - type: "removeMouse", - div: "gameGroup", - }, - ], - 添加弹幕: [ - { - type: "addPop", - value: "这段话将在游戏中以弹幕显示", - px: 32, - py: 32, - color: [255, 0, 0, 1], - boldColor: [0, 0, 0, 1], - left: false, - jump: false, - time: 60, - show: 30, - font: "16px Verdana", - speed: 1, - }, - ], - }, -}; +var events_c12a15a8_c380_4b28_8144_256cba95f760 = +{ + "commonEvent": { + "加点事件": [ + { + "type": "comment", + "text": "通过传参,flag:arg1 表示当前应该的加点数值" + }, + { + "type": "choices", + "choices": [ + { + "text": "攻击+${1*flag:arg1}", + "action": [ + { + "type": "setValue", + "name": "status:atk", + "operator": "+=", + "value": "1*flag:arg1" + } + ] + }, + { + "text": "防御+${2*flag:arg1}", + "action": [ + { + "type": "setValue", + "name": "status:def", + "operator": "+=", + "value": "2*flag:arg1" + } + ] + }, + { + "text": "生命+${200*flag:arg1}", + "action": [ + { + "type": "setValue", + "name": "status:hp", + "operator": "+=", + "value": "200*flag:arg1" + } + ] + } + ] + } + ], + "回收钥匙商店": [ + { + "type": "comment", + "text": "此事件在全局商店中被引用了(全局商店keyShop)" + }, + { + "type": "comment", + "text": "解除引用前勿删除此事件" + }, + { + "type": "comment", + "text": "玩家在快捷列表(V键)中可以使用本公共事件" + }, + { + "type": "while", + "condition": "1", + "data": [ + { + "type": "choices", + "text": "\t[商人,trader]你有多余的钥匙想要出售吗?", + "choices": [ + { + "text": "黄钥匙(10金币)", + "color": [ + 255, + 255, + 0, + 1 + ], + "action": [ + { + "type": "if", + "condition": "item:yellowKey >= 1", + "true": [ + { + "type": "setValue", + "name": "item:yellowKey", + "operator": "-=", + "value": "1" + }, + { + "type": "setValue", + "name": "status:money", + "operator": "+=", + "value": "10" + } + ], + "false": [ + "\t[商人,trader]你没有黄钥匙!" + ] + } + ] + }, + { + "text": "蓝钥匙(50金币)", + "color": [ + 0, + 0, + 255, + 1 + ], + "action": [ + { + "type": "if", + "condition": "item:blueKey >= 1", + "true": [ + { + "type": "setValue", + "name": "item:blueKey", + "operator": "-=", + "value": "1" + }, + { + "type": "setValue", + "name": "status:money", + "operator": "+=", + "value": "50" + } + ], + "false": [ + "\t[商人,trader]你没有蓝钥匙!" + ] + } + ] + }, + { + "text": "离开", + "action": [ + { + "type": "exit" + } + ] + } + ] + } + ] + } + ], + "chapter0": [ + { + "type": "playBgm", + "name": "Crawler.mp3", + "keep": true + }, + { + "type": "setText", + "time": 50 + }, + { + "type": "changebg", + "img1": "", + "memory1": false, + "img2": "", + "memory2": false, + "time": 30, + "style": "引入" + }, + { + "type": "over", + "text": "人生不如意事,十常居七八。", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "世间的万物皆被装缀着不公的色彩。", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "没错,就像——", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "十几年前的那一天,", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "在都市的角落,同许多的生命共同消逝一般。", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "没错,就像——", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "十几年前的那天起以来,", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "无数的生命被那无法逃脱的污泥囚禁一样。", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "人生不如意事,十常居七八。", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "世间的万物皆被装缀着不公的色彩。", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "没错,就像——", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "over", + "text": "如今,这一天。", + "image": "", + "memory": false, + "time": 50, + "hidetime": 30, + "sound": "", + "textColor": [ + 255, + 255, + 255, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "font": "bold 48px Verdana" + }, + { + "type": "changebg", + "img1": "", + "memory1": false, + "img2": "other_0001.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "other_0001.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "这些天,街道不曾下雨。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0001.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "所以,那浸湿地面的,定是那些女孩们流落的鲜血无疑。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0001.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我蹲在充斥着铁锈味般恶臭的小巷中,悠闲地如是想着。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "other_0001.webp", + "memory1": false, + "img2": "bg_3563.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3563.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "扑哧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3563.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "耳旁再次响起象征着某个女孩子死去的声音。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3563.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "再一次——", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3563.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "再一次。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3563.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "女子们被肢解成单纯的肉块。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3563.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我任由流下的血浸满全身,屏住自己的呼吸。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3563.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "祈求自己能拥有从猎人手中逃脱的幸运。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3563.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "扑哧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3563.webp", + "memory1": false, + "img2": "other_0002.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "other_0002.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "直到刚才,我们还坐在去往娼馆的马车的路上。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0002.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "而在这之中的某些人,已经不在这个世上了。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0002.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "不,应该把“某些”换成“几乎所有”才更为恰当吧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0002.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "恐怕,不久之后我也会变成小巷中血腥的装饰品。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0002.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我是为了得到这种死法,才辛苦苟活至今的吗?", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0002.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "来个人告诉我啊——", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0002.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "谁都好。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0002.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "来人啊!!", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "other_0002.webp", + "memory1": false, + "img2": "other_0001.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "other_0001.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "少女", + "time": 30, + "wait": 1000, + "sound": "aiy010000010.mp3", + "text": "「呃······!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "other_0001.webp", + "memory1": false, + "img2": "other_0003.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "other_0003.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "漆黑的物体充斥了我的整个视野", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0003.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我很快意识到,那是只很大的脚。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "other_0003.webp", + "memory1": false, + "img2": "", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "必须要出声求救。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "", + "memory1": false, + "img2": "other_0003.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "other_0003.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "可是,耳中却只能听到自己的牙关不停交战的声音。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0003.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 50, + "wait": 1000, + "sound": "", + "text": "我是如此的无助。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "other_0003.webp", + "memory1": false, + "img2": "", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "逃跑也好,道歉也罢。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "就连抬头看一眼将要杀掉我的人的面孔都做不到。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "少女", + "time": 30, + "wait": 2000, + "sound": "aiy010000020.mp3", + "text": "「······被杀」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "会被杀。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "会被杀!!", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "来自内心深处的冰冷预感,渐渐地在体内蔓延开来。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "少女", + "time": 30, + "wait": 1000, + "sound": "aiy010000030.mp3", + "text": "「不,不要······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "playBgm", + "name": "Blind_Alley.mp3", + "keep": true + }, + { + "type": "changebg", + "img1": "", + "memory1": false, + "img2": "bg_6004.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_6004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "浮游都市,《诺瓦斯·艾蒂尔》。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_6004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "《特别受灾地区》——", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_6004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "通称,《牢狱》", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_6004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "是被险峻的峭壁环绕,与世隔绝的,都市的最底部。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_6004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000010.mp3", + "text": "「放开我!」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_6004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000020.mp3", + "text": "「我只是在帮那个女人而已!」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_6004.webp", + "memory1": false, + "img2": "other_0004.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "other_0004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000030.mp3", + "text": "「你们没听到吗!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000040.mp3", + "text": "「她是被受骗才会被卖到娼馆来的」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "other_0004.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000050.mp3", + "text": "「用肮脏的手段把钱借给她父母的,就是你们这些家伙吧!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "other_0004.webp", + "memory1": false, + "img2": "bg_3601.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000060.mp3", + "text": "「给我说些什么啊」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000010.mp3", + "text": "「这些话等到了娼馆再说吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000020.mp3", + "text": "「我来抓你,只是受雇于人而已」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3601.webp", + "memory1": false, + "img2": "bg_3531.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我走进娼馆《莉莉乌姆》的接待室。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "正在桌旁整理账簿的奥兹停下手头的工作,抬起头向我看来。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000010.mp3", + "text": "「这不是凯伊姆先生吗,辛苦了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000020.mp3", + "text": "「委托已经完成了吗?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000030.mp3", + "text": "「啊啊,是这家伙没错吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "奥兹用只要接触到就能杀人般的眼神在男人脸上搜过。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000030.mp3", + "text": "「没错,就是这个人」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000040.mp3", + "text": "「是么」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000070.mp3", + "text": "「你,你们要对我做什么」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000040.mp3", + "text": "「······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "奥兹用一个眼神,就让男人闭上了嘴。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "然后,向我这边转过身来。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000050.mp3", + "text": "「抱歉啊,总是麻烦你去做这些无聊的事」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000060.mp3", + "text": "「都怪我们这边的年轻人太没用」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000050.mp3", + "text": "「客套话就免了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000070.mp3", + "text": "「这还真是失礼了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000080.mp3", + "text": "「喂,来个人」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "光头男人", + "time": 30, + "wait": 1000, + "sound": "aiy820000010.mp3", + "text": "「是」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000090.mp3", + "text": "「凯伊姆先生做完工作回来了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "光头男人", + "time": 30, + "wait": 1000, + "sound": "aiy820000020.mp3", + "text": "「是,是,那个······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000100.mp3", + "text": "「我是要你拿些酒来,这个蠢材!」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "喀!", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "奥兹扔出的烟灰缸砸中了手下的额头。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "鲜血四溅。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000060.mp3", + "text": "「不用这么麻烦」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000070.mp3", + "text": "「我接下来要去《菲诺列塔》」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000110.mp3", + "text": "「喔唷」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000120.mp3", + "text": "「既然如此,我就不留您在这里喝难饮的劣质酒了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "奥兹斜眼看着正捂住额头呻吟的手下,轻描淡写地说道。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000080.mp3", + "text": "「用这些钱去买药」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我将几枚铜钱仍在那个手下的身前。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000130.mp3", + "text": "「凯伊姆先生,不用对他们这么好」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000090.mp3", + "text": "「无妨」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000100.mp3", + "text": "「话说回来,那个要落跑的女人呢?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000140.mp3", + "text": "「我把她交给那些年轻人了,现在应该正在体会人生的严苛吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000150.mp3", + "text": "「正好,趁此机会凯伊姆先生也来享受一番如何?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000080.mp3", + "text": "「你,你们这些家伙,要对她做什么!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "咣!", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "奥兹给了他一拳。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "一击即倒。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "喀,咚,咯!", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "奥兹毫不留情地向男人的脸上踩去。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000090.mp3", + "text": "「咕······呃咳······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "折断的牙齿伴着血泡被吐出。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "这份白色在鲜红色的液体中格外显眼。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000100.mp3", + "text": "「你们以为做出这种事······卫兵会坐视不理吗······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000160.mp3", + "text": "「啊啊,不会坐视不理的」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000170.mp3", + "text": "「应该会拿出你的钱包,和我们商量如何瓜分吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000110.mp3", + "text": "「那,那种事······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "这在牢狱是理所当然的事。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 2000, + "sound": "aiy350000180.mp3", + "text": "「怎么,头一回来牢狱么?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "男人点了点头。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000190.mp3", + "text": "「为了被骗的女人而来到牢狱,真是个规矩人啊」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000200.mp3", + "text": "「······前提是,被骗的人不是你」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000120.mp3", + "text": "「你说······我被骗了?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "年轻人", + "time": 30, + "wait": 1000, + "sound": "aiy710000130.mp3", + "text": "「那,那是怎么回事!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000210.mp3", + "text": "「不用急,今天晚上会好好告诉你的」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "奥兹抓起男人的脸。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "为引诱客人的怜悯之心而装纯,是娼妇的惯用手段。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "双亲被骗而借钱,结果作为抵押而将自己卖到这里,这是典型的说法。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "如果只是头脑发热而成为常客也就罢了,这次的男人热血过头,居然想出了要带女人私奔的计划。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "虽然女人半开玩笑地予以拒绝,但不知天高地厚的这家伙还是拉着她逃跑了。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "不过,想要逃脱追击本来就是不可能的任务。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "但即便如此,这种事情还是会一再的出现。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "说谎的女人和被骗的男人。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "在娼馆街,这是令人看到生厌的日常的风景。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000110.mp3", + "text": "「我要走了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000220.mp3", + "text": "「好的,下次再麻烦您」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "奥兹", + "time": 30, + "wait": 1000, + "sound": "aiy350000230.mp3", + "text": "「之后吉克先生会将谢礼交给您的」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000120.mp3", + "text": "「啊啊」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我背向奥兹走出娼馆。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000130.mp3", + "text": "「······?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3531.webp", + "memory1": false, + "img2": "bg_3601.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "从远方传来微弱的歌声。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "是关卡广场的方向。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "对了。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "今天有觐见圣女的仪式。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "当代的圣女伊莲——", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "俗称《盲眼之圣女》,据说即使在历代的圣女中,人气也是数一数二的。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "广场上的人估计相当多吧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "虽然我也想去看看她长什么样,不过要在人潮中挤来挤去就免了。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "还是老老实实去菲诺列塔喝烧酒吧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "正当我这样想着的时候,一个身影自小巷的那头走来。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3601.webp", + "memory1": false, + "img2": "bg_3531.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3531.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000140.mp3", + "text": "「艾莉斯」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3531.webp", + "memory1": false, + "img2": "", + "memory2": false, + "time": 30, + "style": "引出" + }, + { + "type": "comment", + "text": "好多立绘,先更这点(吐槽一下)" + } + ], + "chapter01": [ + { + "type": "changebg", + "img1": "", + "memory1": false, + "img2": "bg_3601.webp", + "memory2": false, + "time": 30, + "style": "引入" + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020106.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000005.mp3", + "text": "「啊,凯伊姆」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020141.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000010.mp3", + "text": "「正好,我还想要去找你呢」", + "bodyList": [ + { + "name": "tati_020141.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020157.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000020.mp3", + "text": "「没想到凯伊姆会主动出现······这是命运吗?」", + "bodyList": [ + { + "name": "tati_020157.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000150.mp3", + "text": "「显然不是吧」", + "bodyList": [ + { + "name": "tati_020157.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020107.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000030.mp3", + "text": "「啊,是么」", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "艾莉斯挑了挑整齐的双眉,微微地哼了一声。", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "虽然是个相当引人注目的美人,但她这个将亲切儿子丢入无底深渊的性格,为自己扣了不少的分", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "给人印象最深的,就是那潭水般的双瞳。", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "在漆黑的瞳孔中,完全看不出感情的波动。", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020157.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000040.mp3", + "text": "「喜欢我的眼睛吗?」", + "bodyList": [ + { + "name": "tati_020157.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020157.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000050.mp3", + "text": "「如果想要的话就给你吧?」", + "bodyList": [ + { + "name": "tati_020157.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000160.mp3", + "text": "「用不着」", + "bodyList": [ + { + "name": "tati_020157.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020111.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000060.mp3", + "text": "「阿拉,可惜」", + "bodyList": [ + { + "name": "tati_020111.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000170.mp3", + "text": "「那么,找我有什么事」", + "bodyList": [ + { + "name": "tati_020111.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020101.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000070.mp3", + "text": "「梅尔特的钱好像被偷了」", + "bodyList": [ + { + "name": "tati_020101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000180.mp3", + "text": "「钱被偷了?都几岁了还这么没用」", + "bodyList": [ + { + "name": "tati_020101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020107.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000080.mp3", + "text": "「不要对我说啊」", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000190.mp3", + "text": "「那家伙,该不会说要让我去抓那个小偷吧?」", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020157.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000090.mp3", + "text": "「就是这样」", + "bodyList": [ + { + "name": "tati_020157.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000200.mp3", + "text": "「笨蛋吗」", + "bodyList": [ + { + "name": "tati_020157.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000210.mp3", + "text": "「如果是小钱的话,就当做是买个教训吧」", + "bodyList": [ + { + "name": "tati_020157.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020125.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000100.mp3", + "text": "「说起来,被盗的是这个月的上纳金」", + "bodyList": [ + { + "name": "tati_020125.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000220.mp3", + "text": "「你说什么?」", + "bodyList": [ + { + "name": "tati_020125.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020121.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000110.mp3", + "text": "「用这些钱买教训,也太过奢侈了呢」", + "bodyList": [ + { + "name": "tati_020121.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000230.mp3", + "text": "「知道了,我去找」", + "bodyList": [ + { + "name": "tati_020121.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000240.mp3", + "text": "「小偷的特征呢」", + "bodyList": [ + { + "name": "tati_020121.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020105.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000120.mp3", + "text": "「男孩子」", + "bodyList": [ + { + "name": "tati_020105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020103.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000130.mp3", + "text": "「······而且,背后有翅膀」", + "bodyList": [ + { + "name": "tati_020103.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020141.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000140.mp3", + "text": "「虽然姑且是藏在身后,但是仔细观察的话是很明显的」", + "bodyList": [ + { + "name": "tati_020141.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000250.mp3", + "text": "「羽化病吗」", + "bodyList": [ + { + "name": "tati_020141.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020105.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000150.mp3", + "text": "「那些人可是毫不留情的,所以即使是为了那个孩子,也要赶快抓到他」", + "bodyList": [ + { + "name": "tati_020105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000260.mp3", + "text": "「注意到他逃窜的方向了吗?」", + "bodyList": [ + { + "name": "tati_020105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020105.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000160.mp3", + "text": "「广场那边」", + "bodyList": [ + { + "name": "tati_020105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020107.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000170.mp3", + "text": "「虽然刚才《不蚀金锁》的人去追了,不过多半是······」", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000280.mp3", + "text": "「偏偏还是广场吗」", + "bodyList": [ + { + "name": "tati_020107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_020141.webp", + "px": -300 + }, + "name": "艾莉斯", + "time": 30, + "wait": 1000, + "sound": "aiy020000180.mp3", + "text": "「今天是觐见圣女大人的日子」", + "bodyList": [ + { + "name": "tati_020145.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000290.mp3", + "text": "「我知道」", + "bodyList": [ + { + "name": "tati_020145.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3601.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "aiy310000300.mp3", + "text": "「尽量找找看就好」", + "bodyList": [ + { + "name": "tati_020145.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3601.webp", + "memory1": false, + "img2": "", + "memory2": false, + "time": 30, + "style": "引出" + } + ], + "chapter02": [ + { + "type": "changebg", + "img1": "", + "memory1": false, + "img2": "bg_3561.webp", + "memory2": false, + "time": 30, + "style": "引入" + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "不蚀金锁成员", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「凯伊姆先生,凯伊姆先生」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "不蚀金锁成员", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「您已经和艾莉斯大夫见过面了吗?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「啊啊,所以才会追过来的」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「看到小偷了吗?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "不蚀金锁成员", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「没有,他向广场那边逃了过去,今天这么拥挤,我们也只能放弃了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "不蚀金锁成员", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不过,我也只是刚好在店里所以才追了过去,并不是受人所托」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "不蚀金锁成员", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我已经准备撤退了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "不蚀金锁成员", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「凯伊姆先生还要继续追吗?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「啊啊」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3561.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "做完情报交换之后,我跟男人道别。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3561.webp", + "memory1": false, + "img2": "bg_3021.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「和我想的一样啊······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "在牢狱中最大的广场上,聚集着看不到尽头的人群。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "就算是来参见圣女祈祷,这人数也太多了点吧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "自然,我也找不到逃跑的孩子。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "是混杂到人群中了吧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "如果已经从广场上脱身了的话,就更难发现了。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "只好赌他还在这里了。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3021.webp", + "memory1": false, + "img2": "bg_0000.png", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_0000.png", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我先移动到了一个视野良好的地方。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_0000.png", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "从这里,一眼就可以看到人群的变化。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_0000.png", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "广场还是沸腾起来。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_0000.png", + "memory1": false, + "img2": "bg_3021.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "comment", + "text": "这个神官草莓说是特效不是立绘,标记!" + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "抬头望去,原来是在天台之上出现了一个人影", + "bodyList": [ + { + "name": "tati_440101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "但是,与周围的期待不同,现身的是一名中年的神官。", + "bodyList": [ + { + "name": "tati_440101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "骂声四溢。", + "bodyList": [ + { + "name": "tati_440101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "神官则是笑着摆正衣领", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440101.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「从现在开始,举行谒见的仪式」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440105.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「在参见那位大人之前,我希望牢狱的诸位再次思考这个《诺瓦斯·艾蒂尔》存在的意义······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440101.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「初代圣女伊莲大人,便是也难怪这崇高的祈祷之力,令《诺瓦斯·艾蒂尔》浮在空中,拯救了我们的祖先」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440110.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「这之后的几百年来,传承了初代大人力量的历代圣女伊莲大人,让这里留在了空中」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440101.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「这座都市是被圣女大人守护的人类最后的圣域,而我们则是被选召的虔诚的信徒」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440102.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「怀着对圣女的感激祈祷吧,感谢圣女伊莲吧!并献上祈祷!」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "comment", + "text": "这里是音效,打个标签" + }, + { + "type": "changebg", + "img1": "bg_3021.webp", + "memory1": false, + "img2": "bg_3026.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "comment", + "text": "这里有一堆描述不知道加不加..." + }, + { + "type": "changebg", + "img1": "bg_3026.webp", + "memory1": false, + "img2": "eve_030101.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030102.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不忘感谢与祈祷,神才会拯救我们」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030101.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「与我一起,向审虔诚地祈祷吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "comment", + "text": "这里是人声音效,打个标签" + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "广场上欢声雷动。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "圣女没有回应喧嚣的人声,而是静静地合上双眼面向广场。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "虽然感觉有些冷淡,但总比像个傻瓜似的笑着向这群人挥手要强。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "她掌握着这条街道,还有在这条街上生活的人的命运。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "比起揽得人气,她更想要为了街道的继续存在而献出全力。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "也是为了不让《大崩落》的惨剧再度发生。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "十几年前的那场悲剧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "虽然在我脑海中的记忆已经相当模糊,但哪怕只是稍有触及,不快的感觉都会在胸口蔓延开。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "这时我才想起,现在不是我在这里看圣女的时候。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "comment", + "text": "这里是人声音效,打个标签" + }, + { + "type": "cgtext", + "bg": "eve_030101.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "女声", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「——っ!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "eve_030101.webp", + "memory1": false, + "img2": "bg_3021.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "围观的女人", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「羽,羽化病人!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "围观的中年人", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「喂,谁去叫下羽狩」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "惊慌的观众", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你这家伙不要靠近我,要是传染了可怎么办」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "粗鲁的观众", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你这小鬼赶快滚开」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3021.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「接下来」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3021.webp", + "memory1": false, + "img2": "bg_3026.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030107.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「发生什么事了?看上去似乎很嘈杂」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_130104.webp", + "px": -300 + }, + "name": "随从", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「似乎是某个人逃跑了······具体的我也不是很清楚」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440103.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「圣女大人,继续待在天台上可能会出事,请您先回到室内吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030145.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不用在意我,比起那个,我更关心究竟发生了什么事」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440107.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「对不起,我真的不知道」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030145.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······是吗」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320101.webp", + "px": -300 + }, + "name": "男", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「恕我僭越,请准许我说明情况」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320105.webp", + "px": -300 + }, + "name": "男", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「在来觐见的人群中出现了《羽化病》的患者」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320101.webp", + "px": -300 + }, + "name": "男", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「围观的人群因而产生了骚动」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320102.webp", + "px": -300 + }, + "name": "男", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「现在,《防疫局》已经派遣了部队。我想不久之后,他们就会安静下来了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030124.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「羽化病······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320107.webp", + "px": -300 + }, + "name": "男", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「怎么了?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030125.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「没什么」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030141.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「辛苦了,你的名字是?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320102.webp", + "px": -300 + }, + "name": "男", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「属下是在防疫局任职的,鲁基乌斯· 迪斯·米利尤」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440102.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「噢噢,阁下就是鲁基乌斯卿吗,我听说过你的传闻」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440109.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「阁下是在工作上相当出色的人呢」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320101.webp", + "px": -300 + }, + "name": "鲁基乌斯", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不敢当」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320108.webp", + "px": -300 + }, + "name": "鲁基乌斯", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「话说回来,这次是属下警备工作的失职。让圣女大人见到这不成体统的一面,请您见谅」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030145.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「即使是目不见物的我,也能感受到聚集于此的民众数量之多。警备工作难以展开也在情理之中」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320101.webp", + "px": -300 + }, + "name": "鲁基乌斯", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「属下不胜惶恐」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320102.webp", + "px": -300 + }, + "name": "鲁基乌斯", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「接下来属下还要回到工作岗位上,在这里就先告退了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030101.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「鲁基乌斯先生」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320101.webp", + "px": -300 + }, + "name": "鲁基乌斯", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「属下在」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030105.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你是怎样看待羽狩的工作的呢?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440106.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「圣,圣女大人」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320101.webp", + "px": -300 + }, + "name": "鲁基乌斯", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「防疫局的工作是国王陛下赐予的重要职务。属下非常荣幸能够为这个都市的繁荣尽一份微薄之力」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_440102.webp", + "px": -300 + }, + "name": "神官", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不,不亏是鲁基乌斯卿,相当优秀的想法」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_030125.webp", + "px": -300 + }, + "name": "圣女", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「是吗。辛苦你了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_130124.webp", + "px": -300 + }, + "name": "随从", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「圣女大人······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320102.webp", + "px": -300 + }, + "name": "鲁基乌斯", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3026.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_320101.webp", + "px": -300 + }, + "name": "鲁基乌斯", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那么,属下就回岗位去了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3026.webp", + "memory1": false, + "img2": "", + "memory2": false, + "time": 30, + "style": "引出" + }, + { + "type": "comment", + "text": "下一场景是追捕羽化病少年...做个标记" + } + ], + "chapter03": [ + { + "type": "changebg", + "img1": "", + "memory1": false, + "img2": "bg_3801.webp", + "memory2": false, + "time": 30, + "style": "引入" + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "从羽化病的少年纷乱的足音中,可以听得出相当的疲劳。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "显然,他并没有想到我会捷足先登吧。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "少年惶恐地回头看了一眼后,微微露出安心的表情,双手拄在膝盖上。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「辛苦你了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「稀!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「逃到贫民区是个不错的想法」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你,你是,羽狩吗?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不是」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「什,什么啊······混蛋,不要吓我啊」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我对令你受惊这件事致以歉意」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「作为回报,麻烦你把从店里偷的钱交出来吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「钱?你在说什么」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你要找的腰上的东西,掉在你身后了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「哎?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "comment", + "text": "画面上下抖动一下,cy" + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「呃呀」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你······你这混蛋」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「把偷的钱交出来」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我不知道你在······咕」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "comment", + "text": "画面上下抖动一下,cy" + }, + { + "type": "comment", + "text": "下面这个弹幕说翻译有误,是“就是我偷的,谁会给你这种人”,我也没看过日文原文不太晓得,先cy" + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你,你说是我偷的······有什么证据吗」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你还挺倔的啊」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不过,给我听好了」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你偷的那些钱,是要上缴给《不蚀金锁》的上纳金」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「而且,钱的主人是从前和吉克颇有渊源的女人」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「吉克?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「他是《不蚀金锁》的主人,这么说你就明白了吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「哎?哎?怎么会······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「再问你一遍,钱在哪里?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「是,是,是,在我的怀里」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你没有擅自拿掉一部分吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「是,是的」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那,那个,您是《不蚀金锁》的人吗?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「算是吧」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我什么都可以做,请您一定要帮帮我」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「抱歉,我并没有兴趣去帮助他人」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我什么······什么,都会做的······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我一直都是生活在下层的」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「可是,不知何时染上了羽化病······背后长出了翅膀······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「被寄宿工作的店赶了出来,只得流落到牢狱这里」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「因为独自实在是饿的不行了,所以才会偷这些钱的」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我明明没有做任何坏事······为什么······会遇到这种事······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「谁知道」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「呜······呜呜······接下来,要对我做什么?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我要把你带到组织那里」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「怎,怎么这样」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不过,那样做的前提是你不是羽化病人」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「组织也没有笨到把羽化病人招待到家里的程度」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那么,是要放我逃走吗?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我要让你学到教训」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "comment", + "text": "画面上下抖动一下,cy" + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「如果换做是组织的制裁,至少要有断条胳膊的觉悟」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你的运气不错」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「唔······啊,是的······」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「滚」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「非常感谢」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「唔啊!?」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "comment", + "text": "画面上下抖动一下,cy" + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430103.webp", + "px": -300 + }, + "name": "男", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「到这里就结束了,羽化病人」", + "bodyList": [ + { + "name": "tati_430103.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "男", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「确认他的翅膀」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "趁还没有被卷入麻烦的事情之前,赶快离开这里吧", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3801.webp", + "memory1": false, + "img2": "bg_0000.png", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "changebg", + "img1": "bg_0000.png", + "memory1": false, + "img2": "bg_3801.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430106.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那边的那个人」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······有什么事?」", + "bodyList": [ + { + "name": "tati_430101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430101.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「可以稍微让我问几句话吗」", + "bodyList": [ + { + "name": "tati_430101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······」", + "bodyList": [ + { + "name": "tati_430101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「啊啊,无妨」", + "bodyList": [ + { + "name": "tati_430101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「感谢您的合作」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "队长殷勤地致以谢礼。", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "而在他的眼前,少年的衣服已经被他的补下们扯破。", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "在瘦骨嶙峋的裸露后背上,长有纯白的羽翼。", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "红发的羽狩", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「副队长,确认翅膀的持有了」", + "bodyList": [ + { + "name": "", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「保护他」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「不要······请原谅,我······」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我们只是要带你去治愈院治疗羽化病,不是什么应该感到害怕的事情」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「可是,可是」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「没关系的」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······哥,哥哥」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你是羽化病人的亲属吗?」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「只是路人而已」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「顺带一提,我也没有打算找你们的麻烦」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430101.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「前几天,有个和你说了同样的话的人,在我们背向他的瞬间对我们发动了袭击」", + "bodyList": [ + { + "name": "tati_430101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430108.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我的一个部下就此永久失去了半截胳膊」", + "bodyList": [ + { + "name": "tati_430108.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我表示同情」", + "bodyList": [ + { + "name": "tati_430108.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我马上就会消失的,这样就没问题了吧?」", + "bodyList": [ + { + "name": "tati_430108.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「嘛,不要这么慌张」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "副队长看着羽化的少年。", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你与这个人是什么关系?没有被他殴打吗?」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「没,没有」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「如何对我们保持合作,你就可以在治愈院得到优先的治疗」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那个人,是《不蚀金锁》的组织成员······」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "羽化病患少年", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「突然说让我拿出钱来,我刚一拒绝他就打我」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「原来如此······」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430107.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那位少年说你是《不蚀金锁》的一员,不知此事是否属实?」", + "bodyList": [ + { + "name": "tati_430107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「当然不是」", + "bodyList": [ + { + "name": "tati_430107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我只是从那里接受工作而已,并不是他们的成员」", + "bodyList": [ + { + "name": "tati_430107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你的意思是说,少年在说谎吗?」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「啊啊」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「如果你们和组织有关系的话,只要问问我是不是那里的成员就能明白事实了吧」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430107.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「就算我去询问,也无法从他们那里得到事实」", + "bodyList": [ + { + "name": "tati_430107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430108.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「《不蚀金锁》的那些人一向都不对我们合作,我对此深感困扰」", + "bodyList": [ + { + "name": "tati_430108.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「真是辛苦啊」", + "bodyList": [ + { + "name": "tati_430108.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「说的是啊」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「其实,砍下我部下胳膊的似乎也是组织的成员呢」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「无需如此警戒,我只是想在看守所向你咨询一些事情而已」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「如果能够知晓牢狱与组织的事情,我们也可以尽可能地对更多的羽化病人进行保护」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430102.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那和整条街道的和平也是紧密相关的吧?」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我知道,你们有逮捕干扰狩猎羽化病人的权力」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「但是,我没有对你们做出任何干扰,为什么要对我如此纠缠不休呢」", + "bodyList": [ + { + "name": "tati_430102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那些话,我们会在看守所对你详细说明的」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "在这里起争执的话,就会被羽狩加害。", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "就算能从这里脱身,今后只要碰面就会产生纠纷也是摆明的事情。", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "就算逃跑,也没有好的结果。", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "正当我想要打圆场的时候,刚才的气氛一瞬间产生了转变。", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "发生了什么事······", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050101.webp", + "px": -300 + }, + "name": "??", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我认为,那位先生是正确的」", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "耳边突然响起了一个能够将这阴暗的气息一扫而空的声音", + "bodyList": [ + { + "name": "tati_430105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "羽狩们一起回头。", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "而在他们视线的焦点处,", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "伫立着一位女性。", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "在端正的容颜下,代表着强烈意志的双眉十分显眼。", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "身体的柔软与紧紧包裹在其身上的御兽支付,两者显得十分的不搭配。", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "我还是第一次看到女性的羽狩。", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "羽狩的副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「队长,这是获得《不蚀金锁》情报的好机会」", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430105.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430141.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「兰格副队长,就算是为了获得情报,也不能做出恫吓的发言啊」", + "bodyList": [ + { + "name": "tati_050141.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430105.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430106.webp", + "px": -300 + }, + "name": "兰格副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我并没有打算去恫吓他······」", + "bodyList": [ + { + "name": "tati_050141.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430106.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050221.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「告诉我那个被砍掉胳膊的队员的名字」", + "bodyList": [ + { + "name": "tati_050221.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430106.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050223.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我会去探望他的」", + "bodyList": [ + { + "name": "tati_050223.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430106.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430104.webp", + "px": -300 + }, + "name": "兰格副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「那个是······」", + "bodyList": [ + { + "name": "tati_050223.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430104.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050101.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我知道,你一直在为有所收获而努力工作」", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430106.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050105.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「但是,正因为我们的工作是为民众提供帮助」", + "bodyList": [ + { + "name": "tati_050105.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430106.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050103.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「所以就更不能损害人与人之间的信赖」", + "bodyList": [ + { + "name": "tati_050103.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430106.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_430105.webp", + "px": -300 + }, + "name": "兰格副队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我会铭记在心」", + "bodyList": [ + { + "name": "tati_050103.webp", + "px": 200, + "filter": false + }, + { + "name": "tati_430105.webp", + "px": 1000, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050101.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「这位先生,我的部下失礼了」", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「只要不对我再来一次就好」", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050126.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「请稍等」", + "bodyList": [ + { + "name": "tati_050126.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「有什么事?」", + "bodyList": [ + { + "name": "tati_050126.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050101.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我想确认一件事」", + "bodyList": [ + { + "name": "tati_050101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050105.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「你真的不是《不蚀金锁》的成员吗?」", + "bodyList": [ + { + "name": "tati_050105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「真的」", + "bodyList": [ + { + "name": "tati_050105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「如果我说是的话,你有什么打算?」", + "bodyList": [ + { + "name": "tati_050105.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_050143.webp", + "px": -300 + }, + "name": "羽狩的队长", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「我听过传闻,说他们是用依靠暴力而得的钱在生活」", + "bodyList": [ + { + "name": "tati_050143.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「······这样啊」", + "bodyList": [ + { + "name": "tati_050143.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3801.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 30, + "wait": 1000, + "sound": "", + "text": "「如果能有收获就好了啊」", + "bodyList": [ + { + "name": "tati_050143.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "changebg", + "img1": "bg_3801.webp", + "memory1": false, + "img2": "", + "memory2": false, + "time": 30, + "style": "引出" + } + ], + "chapter04": [ + { + "type": "changebg", + "img1": "", + "memory1": false, + "img2": "bg_3512.webp", + "memory2": false, + "time": 30, + "style": "引入" + }, + { + "type": "changebg", + "img1": "bg_3512.webp", + "memory1": false, + "img2": "bg_3522.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "changebg", + "img1": "bg_3522.webp", + "memory1": false, + "img2": "bg_3602.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "changebg", + "img1": "bg_3602.webp", + "memory1": false, + "img2": "bg_3551.webp", + "memory2": false, + "time": 30, + "style": "场景切换" + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120122.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「欢迎光临」", + "bodyList": [ + { + "name": "", + "px": 100, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120101.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「辛苦了」", + "bodyList": [ + { + "name": "tati_120101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120107.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「抱歉,又拜托给你了个这么麻烦的工作」", + "bodyList": [ + { + "name": "tati_120107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「没什么,比想象中完成的更容易」", + "bodyList": [ + { + "name": "tati_120107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120112.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「那就好」", + "bodyList": [ + { + "name": "tati_120112.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120102.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「这是我的一点谢意」", + "bodyList": [ + { + "name": "tati_120102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「味道有些变化啊」", + "bodyList": [ + { + "name": "tati_120102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120107.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「啊,被发现了?」", + "bodyList": [ + { + "name": "tati_120107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120111.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「最近,没能到手什么好的原料呢」", + "bodyList": [ + { + "name": "tati_120111.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「去拜托吉克如何?」", + "bodyList": [ + { + "name": "tati_120111.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120127.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「话是这么说,但是总不能用店里采购的这种小事去麻烦他吧······」", + "bodyList": [ + { + "name": "tati_120127.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「那希望你也不要来麻烦我」", + "bodyList": [ + { + "name": "tati_120127.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120112.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「那 是 两 码 事」", + "bodyList": [ + { + "name": "tati_120112.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120113.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「再说,凯伊姆是靠着工作来生活的吧」", + "bodyList": [ + { + "name": "tati_120113.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120113.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「而且,自己的钱被偷了这么害羞的事,向凯伊姆意外的其他人都说不出口」", + "bodyList": [ + { + "name": "tati_120113.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「反正,也已经传到吉克的耳朵里了」", + "bodyList": [ + { + "name": "tati_120113.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120112.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「这是面子问题啊,面子问题」", + "bodyList": [ + { + "name": "tati_120112.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「嘛,算了」", + "bodyList": [ + { + "name": "tati_120101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「这样就好了吧?」", + "bodyList": [ + { + "name": "tati_120101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120121.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「这是钱包呢」", + "bodyList": [ + { + "name": "tati_120121.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120102.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「嗯,东西没少」", + "bodyList": [ + { + "name": "tati_120102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120111.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「太好啦—这个月的上纳金,我可全部都放在里面了呢」", + "bodyList": [ + { + "name": "tati_120111.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120113.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「如果没有找到的话,说不定就又会被送到娼馆里了呢」", + "bodyList": [ + { + "name": "tati_120113.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「在那边不是来钱更快吗?」", + "bodyList": [ + { + "name": "tati_120113.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120106.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「阿拉,你是在说我还能有魅力吗?」", + "bodyList": [ + { + "name": "tati_120106.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「这是客套话而已」", + "bodyList": [ + { + "name": "tati_120106.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120113.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「欺负人」", + "bodyList": [ + { + "name": "tati_120113.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "comment", + "text": "弹个脑崩" + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120122.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「总而言之,今天帮大忙了」", + "bodyList": [ + { + "name": "tati_120122.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120107.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「谢礼嘛······」", + "bodyList": [ + { + "name": "tati_120107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「就记在账单上吧」", + "bodyList": [ + { + "name": "tati_120107.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120112.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「了解—盛谢惠顾了哦?」", + "bodyList": [ + { + "name": "tati_120112.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "喀啷喀啷", + "bodyList": [ + { + "name": "", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "门铃响起", + "bodyList": [ + { + "name": "", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "喧哗瞬间安静下来。", + "bodyList": [ + { + "name": "", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "进来的人是吉克。", + "bodyList": [ + { + "name": "tati_340101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "是掌控着牢狱的组织之一,《不蚀金锁》的头目。", + "bodyList": [ + { + "name": "tati_340101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "不仅组织的成员,就连店内一般的客人也对他以注目礼表示敬意。", + "bodyList": [ + { + "name": "tati_340101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340102.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「各位继续吧」", + "bodyList": [ + { + "name": "tati_340102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "仿佛停滞的时钟重新转动了一般,店内恢复了热闹的气氛。", + "bodyList": [ + { + "name": "tati_340102.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340101.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「抱歉,今天拜托你去做了无聊的工作」", + "bodyList": [ + { + "name": "tati_340101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「不用介意」", + "bodyList": [ + { + "name": "tati_340101.webp", + "px": 600, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "吉克轻轻点了点头,在我右边坐了下来", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「逃跑的男人怎么样了?」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340104.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「嗯?已经不在这个世上了」", + "bodyList": [ + { + "name": "tati_z340104.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340107.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「有什么想要知道的事吗?」", + "bodyList": [ + { + "name": "tati_z340107.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「不,没什么」", + "bodyList": [ + { + "name": "tati_z340107.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340108.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「那个无聊的家伙,完全没有趣味呢」", + "bodyList": [ + { + "name": "tati_z340108.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340114.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「真希望他也替我负责清扫的部下也考虑考虑」", + "bodyList": [ + { + "name": "tati_z340114.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「真是灾难啊」", + "bodyList": [ + { + "name": "tati_z340114.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340102.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「比起那个,我听说了哦。你去追羽化病人了啊」", + "bodyList": [ + { + "name": "tati_z340102.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「消息真灵通」", + "bodyList": [ + { + "name": "tati_z340102.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340104.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「梅尔特也注意点」", + "bodyList": [ + { + "name": "tati_z340104.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340107.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「你丢钱已经不是一回两回了」", + "bodyList": [ + { + "name": "tati_z340107.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120132.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「好的—我会注意的。」", + "bodyList": [ + { + "name": "tati_z340104.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120132.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120101.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「吉克还是平常的点单吧」", + "bodyList": [ + { + "name": "tati_z340102.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120101.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120121.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「凯伊姆要再来一杯吗?」", + "bodyList": [ + { + "name": "tati_z340102.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120121.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "我们用眼神点头示意后,梅尔特开始准备起酒来。", + "bodyList": [ + { + "name": "tati_z340102.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "", + "time": 0, + "wait": 2000, + "sound": "", + "text": "悠然地吐出眼圈后,吉克取出一个纸包放在柜台上。", + "bodyList": [ + { + "name": "tati_z340102.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340101.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「这是抓捕逃跑男人的报酬」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「下次有什么事再告诉我」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120102.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「来,久等了」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120102.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「话说回来梅尔特,为什么会被那种孩子偷到钱?」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120102.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340102.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「让我猜猜看」", + "bodyList": [ + { + "name": "tati_z340102.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120102.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340110.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「是那个吧,看某个特立独行的男人入迷了,所以就有了空隙?」", + "bodyList": [ + { + "name": "tati_z340110.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120102.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120113.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「可惜—」", + "bodyList": [ + { + "name": "tati_z340110.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120113.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120101.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「事实恰恰相反,是那家伙一直在纠缠我」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120101.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「完全把你当成新进的女佣了么」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120101.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120121.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「我从前可是很有名的,不会被当成这种下人吧」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120121.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120132.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「······而且,我没法对对我这么钟情的人发火啊」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120132.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340106.webp", + "px": -300 + }, + "name": "凯伊姆&吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「你傻啊」", + "bodyList": [ + { + "name": "tati_z340106.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120132.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340112.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「异口同声呢,不亏是兄弟」", + "bodyList": [ + { + "name": "tati_z340106.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120112.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「别用这种称呼,怪恶心的」", + "bodyList": [ + { + "name": "tati_z340106.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120112.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340108.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「说得没错」", + "bodyList": [ + { + "name": "tati_z340108.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120112.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340105.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「······说起来······」", + "bodyList": [ + { + "name": "tati_z340105.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120112.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120107.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「怎么了?」", + "bodyList": [ + { + "name": "tati_z340105.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120107.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340107.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「有件事我一直很在意,我和凯伊姆,哪个是哥哥啊?」", + "bodyList": [ + { + "name": "tati_z340107.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120107.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "", + "px": -300 + }, + "name": "凯伊姆", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「你也说这么无聊的话题」", + "bodyList": [ + { + "name": "tati_z340107.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120107.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340103.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「不,这是很重要的事情」", + "bodyList": [ + { + "name": "tati_z340103.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120107.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340101.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「梅尔特,事实是怎么样的?」", + "bodyList": [ + { + "name": "tati_z340101.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120107.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120113.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「啊~是怎么样的呢~」", + "bodyList": [ + { + "name": "tati_z340105.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120113.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_120112.webp", + "px": -300 + }, + "name": "梅尔特", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「我忘记了」", + "bodyList": [ + { + "name": "tati_z340105.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120112.webp", + "px": 1200, + "filter": false + } + ] + }, + { + "type": "cgtext", + "bg": "bg_3551.webp", + "memory": false, + "WindowSkin": false, + "head": { + "name": "face_340107.webp", + "px": -300 + }, + "name": "吉克", + "time": 0, + "wait": 2000, + "sound": "", + "text": "「骗人」", + "bodyList": [ + { + "name": "tati_z340107.webp", + "px": -200, + "filter": false + }, + { + "name": "tati_120112.webp", + "px": 1200, + "filter": false + } + ] + } + ], + "chapter05": null, + "强制横屏": [ + { + "type": "if", + "condition": "((!main.replayChecking )&&(!core.isReplaying()))", + "true": [ + { + "type": "if", + "condition": "((screen.orientation || {}).type ||\n screen.mozOrientation ||\n screen.msOrientation!==\"landscape-primary\")", + "true": [ + { + "type": "if", + "condition": "(!core.platform.isPC)", + "true": [ + { + "type": "confirm", + "default": true, + "text": "手机用户横屏体验更佳,是否切换", + "yes": [ + { + "type": "function", + "function": "function(){\ncore.triggerFullscreen(true)\n}" + } + ], + "no": [] + } + ] + } + ] + } + ] + } + ] + }, + "CommonEventTemplate": { + "检测音乐如果没有开启则系统提示开启": [ + { + "type": "if", + "condition": "!core.musicStatus.bgmStatus", + "true": [ + "\t[系统提示]你当前音乐处于关闭状态,本塔开音乐游戏效果更佳" + ], + "false": [] + } + ], + "仿新新魔塔一次性商人": [ + { + "type": "if", + "condition": "switch:A", + "true": [ + "\t[行商,trader]\b[this]这是购买我的道具后我给玩家的提示。", + { + "type": "comment", + "text": "下一条指令可视情况使用或不使用" + }, + { + "type": "hide", + "remove": true, + "time": 250, + "loc": [ + [] + ] + } + ], + "false": [ + { + "type": "confirm", + "text": "我有3把黄钥匙,\n你出50金币就卖给你。", + "yes": [ + { + "type": "if", + "condition": "status:money>=50", + "true": [ + { + "type": "setValue", + "name": "status:money", + "operator": "-=", + "value": "50" + }, + { + "type": "setValue", + "name": "item:yellowKey", + "operator": "+=", + "value": "3" + }, + { + "type": "playSound", + "name": "确定", + "stop": true + }, + { + "type": "setValue", + "name": "switch:A", + "value": "true" + } + ], + "false": [ + { + "type": "playSound", + "name": "操作失败" + }, + "\t[行商,trader]\b[this]你的金币不足!" + ] + } + ], + "no": [] + } + ] + } + ], + "全地图选中一个点": [ + { + "type": "comment", + "text": "全地图选中一个点,需要用鼠标或触屏操作" + }, + { + "type": "setValue", + "name": "temp:X", + "value": "status:x" + }, + { + "type": "setValue", + "name": "temp:Y", + "value": "status:y" + }, + { + "type": "tip", + "text": "再次点击闪烁位置确认" + }, + { + "type": "while", + "condition": "true", + "data": [ + { + "type": "drawSelector", + "image": "winskin.webp", + "code": 1, + "x": "32*temp:X", + "y": "32*temp:Y", + "width": 32, + "height": 32 + }, + { + "type": "wait" + }, + { + "type": "if", + "condition": "(flag:type === 1)", + "true": [ + { + "type": "if", + "condition": "((temp:X===flag:x)&&(temp:Y===flag:y))", + "true": [ + { + "type": "break", + "n": 1 + } + ] + }, + { + "type": "setValue", + "name": "temp:X", + "value": "flag:x" + }, + { + "type": "setValue", + "name": "temp:Y", + "value": "flag:y" + } + ] + } + ] + }, + { + "type": "drawSelector", + "code": 1 + }, + { + "type": "comment", + "text": "流程进行到这里可以对[X,Y]点进行处理,比如" + }, + { + "type": "closeDoor", + "id": "yellowDoor", + "loc": [ + "temp:X", + "temp:Y" + ] + } + ], + "多阶段Boss战斗": [ + { + "type": "comment", + "text": "多阶段boss,请直接作为战后事件使用" + }, + { + "type": "setValue", + "name": "switch:A", + "operator": "+=", + "value": "1" + }, + { + "type": "switch", + "condition": "switch:A", + "caseList": [ + { + "case": "1", + "action": [ + { + "type": "setBlock", + "number": "redSlime", + "loc": [ + [] + ] + }, + "\t[2阶段boss,redSlime]\b[this]你以为你已经打败我了吗?没听说过史莱姆有九条命吗?" + ] + }, + { + "case": "2", + "action": [ + { + "type": "setBlock", + "number": "blackSlime", + "loc": [ + [] + ] + }, + "\t[3阶段boss,blackSlime]\b[this]不能消灭我的,只会让我更强大!" + ] + }, + { + "case": "3", + "action": [ + { + "type": "setBlock", + "number": "slimelord", + "loc": [ + [] + ] + }, + "\t[4阶段boss,slimelord]\b[this]我还能打!" + ] + }, + { + "case": "4", + "action": [ + "\t[4阶段boss,slimelord]我一定会回来的!" + ] + } + ] + } + ], + "光标修改": [ + { + "type": "changeMouse", + "icon": "sword0", + "div": "gameGroup", + "translate": [ + 0, + 0 + ], + "scale": [ + 1, + 1 + ], + "angle": 0, + "px": 0, + "py": 0 + }, + { + "type": "removeMouse", + "div": "gameGroup" + } + ], + "添加弹幕": [ + { + "type": "addPop", + "value": "这段话将在游戏中以弹幕显示", + "px": 32, + "py": 32, + "color": [ + 255, + 0, + 0, + 1 + ], + "boldColor": [ + 0, + 0, + 0, + 1 + ], + "left": false, + "jump": false, + "time": 60, + "show": 30, + "font": "16px Verdana", + "speed": 1 + } + ] + } +} \ No newline at end of file diff --git a/project/floors/street01.js b/project/floors/street01.js index 61dd725..dceac7f 100644 --- a/project/floors/street01.js +++ b/project/floors/street01.js @@ -29,7 +29,7 @@ main.floors.street01= "6,11": [ { "type": "insert", - "name": "chapter01" + "name": "chapter04" } ], "4,11": [ @@ -118,7 +118,7 @@ main.floors.street01= [110118,110118,200096,110116,110020, 0,200014, 0, 0, 0, 0, 0,110125], [ 92, 0, 0,110124, 0,201, 0, 0,110125,110122,110122,110122,110122], [ 0, 0, 0,110118,110118,202,110118,110118,110122, 0, 0, 0, 94], - [130170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [130170, 0, 0, 0, 71, 35, 0, 0, 0, 0, 0, 0, 0], [130178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130168,130169], [130225,130169,130169,130169,130169,130170,110122,110122,130168,130169,130169,130224,130177] ], diff --git a/project/floors/yiqu8.js b/project/floors/yiqu8.js index 3174759..18bb1e8 100644 --- a/project/floors/yiqu8.js +++ b/project/floors/yiqu8.js @@ -1,29 +1,29 @@ main.floors.yiqu8= { -"floorId": "yiqu8", -"title": "主塔 8 层", -"name": "8", -"width": 13, -"height": 13, -"canFlyTo": true, -"canFlyFrom": true, -"canUseQuickShop": true, -"images": [], -"ratio": 1, -"defaultGround": "grass2", -"firstArrive": [], -"eachArrive": [], -"parallelDo": "", -"events": {}, -"changeFloor": {}, -"beforeBattle": {}, -"afterBattle": {}, -"afterGetItem": {}, -"afterOpenDoor": {}, -"autoEvent": {}, -"cannotMove": {}, -"cannotMoveIn": {}, -"map": [ + "floorId": "yiqu8", + "title": "主塔 8 层", + "name": "8", + "width": 13, + "height": 13, + "canFlyTo": true, + "canFlyFrom": true, + "canUseQuickShop": true, + "images": [], + "ratio": 1, + "defaultGround": "grass2", + "firstArrive": [], + "eachArrive": [], + "parallelDo": "", + "events": {}, + "changeFloor": {}, + "beforeBattle": {}, + "afterBattle": {}, + "afterGetItem": {}, + "afterOpenDoor": {}, + "autoEvent": {}, + "cannotMove": {}, + "cannotMoveIn": {}, + "map": [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], @@ -38,4 +38,16 @@ main.floors.yiqu8= [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ], + "bgmap": [ + +], + "fgmap": [ + +], + "bg2map": [ + +], + "fg2map": [ + +] } \ No newline at end of file diff --git a/project/functions.js b/project/functions.js index 0719015..e90a843 100644 --- a/project/functions.js +++ b/project/functions.js @@ -1088,26 +1088,27 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = }, "getStatusLabel": function (name) { - // 返回某个状态英文名的对应中文标签,如atk -> 攻击,def -> 防御等。 - // 请注意此项仅影响 libs/ 下的内容(如绘制怪物手册、数据统计等) - // 自行定义的(比如获得道具效果)中用到的“攻击+3”等需要自己去对应地方修改 + // 返回某个状态英文名的对应中文标签,如atk -> 攻击,def -> 防御等。 + // 请注意此项仅影响 libs/ 下的内容(如绘制怪物手册、数据统计等) + // 自行定义的(比如获得道具效果)中用到的“攻击+3”等需要自己去对应地方修改 - return { - name: "名称", - lv: "等级", - hpmax: "生命上限", - hp: "生命", - manamax: "魔力上限", - mana: "魔力", - atk: "攻击", - def: "防御", - mdef: "护盾", - money: "金币", - exp: "经验", - point: "加点", - steps: "步数", - }[name] || name; - }, + return { + name: "名称", + lv: "等级", + hpmax: "生命上限", + hp: "生命", + manamax: "魔力上限", + mana: "魔力", + atk: "攻击", + def: "防御", + mdef: "法强", + speed: "速度", + money: "金币", + exp: "经验", + point: "加点", + steps: "步数", + } [name] || name; +}, "triggerDebuff": function (action, type) { // 毒衰咒效果的获得与解除 // action:获得还是解除;'get'表示获得,'remove'表示解除 @@ -1166,8 +1167,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } }, "updateStatusBar": function () { - //更新属性映射 - core.updateStatus() // 更新状态栏 core.ui.statusBar.update(); // 更新阻激夹域的伤害值 diff --git a/project/images/bg_0000.png b/project/images/bg_0000.png new file mode 100644 index 0000000..dec8909 Binary files /dev/null and b/project/images/bg_0000.png differ diff --git a/project/images/bg_3021.webp b/project/images/bg_3021.webp new file mode 100644 index 0000000..c87f60b Binary files /dev/null and b/project/images/bg_3021.webp differ diff --git a/project/images/bg_3026.webp b/project/images/bg_3026.webp new file mode 100644 index 0000000..8bd0aa3 Binary files /dev/null and b/project/images/bg_3026.webp differ diff --git a/project/images/bg_3028.webp b/project/images/bg_3028.webp new file mode 100644 index 0000000..28fb42c Binary files /dev/null and b/project/images/bg_3028.webp differ diff --git a/project/images/bg_3512.webp b/project/images/bg_3512.webp new file mode 100644 index 0000000..9feaa2f Binary files /dev/null and b/project/images/bg_3512.webp differ diff --git a/project/images/bg_3522.webp b/project/images/bg_3522.webp new file mode 100644 index 0000000..da43179 Binary files /dev/null and b/project/images/bg_3522.webp differ diff --git a/project/images/bg_3561.webp b/project/images/bg_3561.webp new file mode 100644 index 0000000..96a778b Binary files /dev/null and b/project/images/bg_3561.webp differ diff --git a/project/images/bg_3602.webp b/project/images/bg_3602.webp new file mode 100644 index 0000000..19c22f8 Binary files /dev/null and b/project/images/bg_3602.webp differ diff --git a/project/images/bg_3801.webp b/project/images/bg_3801.webp new file mode 100644 index 0000000..57849f5 Binary files /dev/null and b/project/images/bg_3801.webp differ diff --git a/project/images/face_030101.webp b/project/images/face_030101.webp new file mode 100644 index 0000000..46c41ed Binary files /dev/null and b/project/images/face_030101.webp differ diff --git a/project/images/face_030102.webp b/project/images/face_030102.webp new file mode 100644 index 0000000..c2b5ac7 Binary files /dev/null and b/project/images/face_030102.webp differ diff --git a/project/images/face_030103.webp b/project/images/face_030103.webp new file mode 100644 index 0000000..d314fca Binary files /dev/null and b/project/images/face_030103.webp differ diff --git a/project/images/face_030104.webp b/project/images/face_030104.webp new file mode 100644 index 0000000..6175ca9 Binary files /dev/null and b/project/images/face_030104.webp differ diff --git a/project/images/face_030105.webp b/project/images/face_030105.webp new file mode 100644 index 0000000..9935bfa Binary files /dev/null and b/project/images/face_030105.webp differ diff --git a/project/images/face_030107.webp b/project/images/face_030107.webp new file mode 100644 index 0000000..1c87a84 Binary files /dev/null and b/project/images/face_030107.webp differ diff --git a/project/images/face_030121.webp b/project/images/face_030121.webp new file mode 100644 index 0000000..a04c087 Binary files /dev/null and b/project/images/face_030121.webp differ diff --git a/project/images/face_030122.webp b/project/images/face_030122.webp new file mode 100644 index 0000000..19801ae Binary files /dev/null and b/project/images/face_030122.webp differ diff --git a/project/images/face_030123.webp b/project/images/face_030123.webp new file mode 100644 index 0000000..0fd9160 Binary files /dev/null and b/project/images/face_030123.webp differ diff --git a/project/images/face_030124.webp b/project/images/face_030124.webp new file mode 100644 index 0000000..ac6e273 Binary files /dev/null and b/project/images/face_030124.webp differ diff --git a/project/images/face_030125.webp b/project/images/face_030125.webp new file mode 100644 index 0000000..48eb565 Binary files /dev/null and b/project/images/face_030125.webp differ diff --git a/project/images/face_030127.webp b/project/images/face_030127.webp new file mode 100644 index 0000000..5bd993b Binary files /dev/null and b/project/images/face_030127.webp differ diff --git a/project/images/face_030129.webp b/project/images/face_030129.webp new file mode 100644 index 0000000..b71b74f Binary files /dev/null and b/project/images/face_030129.webp differ diff --git a/project/images/face_030131.webp b/project/images/face_030131.webp new file mode 100644 index 0000000..6faf82e Binary files /dev/null and b/project/images/face_030131.webp differ diff --git a/project/images/face_030132.webp b/project/images/face_030132.webp new file mode 100644 index 0000000..6d02061 Binary files /dev/null and b/project/images/face_030132.webp differ diff --git a/project/images/face_030141.webp b/project/images/face_030141.webp new file mode 100644 index 0000000..db4120e Binary files /dev/null and b/project/images/face_030141.webp differ diff --git a/project/images/face_030142.webp b/project/images/face_030142.webp new file mode 100644 index 0000000..bf889f3 Binary files /dev/null and b/project/images/face_030142.webp differ diff --git a/project/images/face_030143.webp b/project/images/face_030143.webp new file mode 100644 index 0000000..7d23764 Binary files /dev/null and b/project/images/face_030143.webp differ diff --git a/project/images/face_030144.webp b/project/images/face_030144.webp new file mode 100644 index 0000000..b53077e Binary files /dev/null and b/project/images/face_030144.webp differ diff --git a/project/images/face_030145.webp b/project/images/face_030145.webp new file mode 100644 index 0000000..3c55682 Binary files /dev/null and b/project/images/face_030145.webp differ diff --git a/project/images/face_050101.webp b/project/images/face_050101.webp new file mode 100644 index 0000000..10d4b8c Binary files /dev/null and b/project/images/face_050101.webp differ diff --git a/project/images/face_050102.webp b/project/images/face_050102.webp new file mode 100644 index 0000000..5c97cde Binary files /dev/null and b/project/images/face_050102.webp differ diff --git a/project/images/face_050103.webp b/project/images/face_050103.webp new file mode 100644 index 0000000..0d3d811 Binary files /dev/null and b/project/images/face_050103.webp differ diff --git a/project/images/face_050104.webp b/project/images/face_050104.webp new file mode 100644 index 0000000..0767d99 Binary files /dev/null and b/project/images/face_050104.webp differ diff --git a/project/images/face_050105.webp b/project/images/face_050105.webp new file mode 100644 index 0000000..21a2fe5 Binary files /dev/null and b/project/images/face_050105.webp differ diff --git a/project/images/face_050106.webp b/project/images/face_050106.webp new file mode 100644 index 0000000..8a3bc4e Binary files /dev/null and b/project/images/face_050106.webp differ diff --git a/project/images/face_050107.webp b/project/images/face_050107.webp new file mode 100644 index 0000000..f838238 Binary files /dev/null and b/project/images/face_050107.webp differ diff --git a/project/images/face_050108.webp b/project/images/face_050108.webp new file mode 100644 index 0000000..d330016 Binary files /dev/null and b/project/images/face_050108.webp differ diff --git a/project/images/face_050111.webp b/project/images/face_050111.webp new file mode 100644 index 0000000..e192d48 Binary files /dev/null and b/project/images/face_050111.webp differ diff --git a/project/images/face_050112.webp b/project/images/face_050112.webp new file mode 100644 index 0000000..ec560a3 Binary files /dev/null and b/project/images/face_050112.webp differ diff --git a/project/images/face_050113.webp b/project/images/face_050113.webp new file mode 100644 index 0000000..344da43 Binary files /dev/null and b/project/images/face_050113.webp differ diff --git a/project/images/face_050116.webp b/project/images/face_050116.webp new file mode 100644 index 0000000..1cea83d Binary files /dev/null and b/project/images/face_050116.webp differ diff --git a/project/images/face_050121.webp b/project/images/face_050121.webp new file mode 100644 index 0000000..1ae1b7b Binary files /dev/null and b/project/images/face_050121.webp differ diff --git a/project/images/face_050122.webp b/project/images/face_050122.webp new file mode 100644 index 0000000..b7b6467 Binary files /dev/null and b/project/images/face_050122.webp differ diff --git a/project/images/face_050123.webp b/project/images/face_050123.webp new file mode 100644 index 0000000..1e7c47a Binary files /dev/null and b/project/images/face_050123.webp differ diff --git a/project/images/face_050124.webp b/project/images/face_050124.webp new file mode 100644 index 0000000..fc5e21f Binary files /dev/null and b/project/images/face_050124.webp differ diff --git a/project/images/face_050125.webp b/project/images/face_050125.webp new file mode 100644 index 0000000..a5651ae Binary files /dev/null and b/project/images/face_050125.webp differ diff --git a/project/images/face_050126.webp b/project/images/face_050126.webp new file mode 100644 index 0000000..1f1d570 Binary files /dev/null and b/project/images/face_050126.webp differ diff --git a/project/images/face_050127.webp b/project/images/face_050127.webp new file mode 100644 index 0000000..ea1297d Binary files /dev/null and b/project/images/face_050127.webp differ diff --git a/project/images/face_050128.webp b/project/images/face_050128.webp new file mode 100644 index 0000000..8a191f7 Binary files /dev/null and b/project/images/face_050128.webp differ diff --git a/project/images/face_050129.webp b/project/images/face_050129.webp new file mode 100644 index 0000000..571b5ac Binary files /dev/null and b/project/images/face_050129.webp differ diff --git a/project/images/face_050130.webp b/project/images/face_050130.webp new file mode 100644 index 0000000..056379e Binary files /dev/null and b/project/images/face_050130.webp differ diff --git a/project/images/face_050131.webp b/project/images/face_050131.webp new file mode 100644 index 0000000..5a51170 Binary files /dev/null and b/project/images/face_050131.webp differ diff --git a/project/images/face_050132.webp b/project/images/face_050132.webp new file mode 100644 index 0000000..25d18fe Binary files /dev/null and b/project/images/face_050132.webp differ diff --git a/project/images/face_050134.webp b/project/images/face_050134.webp new file mode 100644 index 0000000..837fdd5 Binary files /dev/null and b/project/images/face_050134.webp differ diff --git a/project/images/face_050135.webp b/project/images/face_050135.webp new file mode 100644 index 0000000..a96d4db Binary files /dev/null and b/project/images/face_050135.webp differ diff --git a/project/images/face_050136.webp b/project/images/face_050136.webp new file mode 100644 index 0000000..0812a79 Binary files /dev/null and b/project/images/face_050136.webp differ diff --git a/project/images/face_050137.webp b/project/images/face_050137.webp new file mode 100644 index 0000000..38e6649 Binary files /dev/null and b/project/images/face_050137.webp differ diff --git a/project/images/face_050141.webp b/project/images/face_050141.webp new file mode 100644 index 0000000..04ac926 Binary files /dev/null and b/project/images/face_050141.webp differ diff --git a/project/images/face_050142.webp b/project/images/face_050142.webp new file mode 100644 index 0000000..adf6280 Binary files /dev/null and b/project/images/face_050142.webp differ diff --git a/project/images/face_050143.webp b/project/images/face_050143.webp new file mode 100644 index 0000000..ee524ca Binary files /dev/null and b/project/images/face_050143.webp differ diff --git a/project/images/face_050144.webp b/project/images/face_050144.webp new file mode 100644 index 0000000..8df7199 Binary files /dev/null and b/project/images/face_050144.webp differ diff --git a/project/images/face_050145.webp b/project/images/face_050145.webp new file mode 100644 index 0000000..63b24ee Binary files /dev/null and b/project/images/face_050145.webp differ diff --git a/project/images/face_050146.webp b/project/images/face_050146.webp new file mode 100644 index 0000000..bf2f02b Binary files /dev/null and b/project/images/face_050146.webp differ diff --git a/project/images/face_050147.webp b/project/images/face_050147.webp new file mode 100644 index 0000000..fa89346 Binary files /dev/null and b/project/images/face_050147.webp differ diff --git a/project/images/face_050148.webp b/project/images/face_050148.webp new file mode 100644 index 0000000..8b615eb Binary files /dev/null and b/project/images/face_050148.webp differ diff --git a/project/images/face_050150.webp b/project/images/face_050150.webp new file mode 100644 index 0000000..46e228a Binary files /dev/null and b/project/images/face_050150.webp differ diff --git a/project/images/face_050151.webp b/project/images/face_050151.webp new file mode 100644 index 0000000..5bab333 Binary files /dev/null and b/project/images/face_050151.webp differ diff --git a/project/images/face_050152.webp b/project/images/face_050152.webp new file mode 100644 index 0000000..3d2954f Binary files /dev/null and b/project/images/face_050152.webp differ diff --git a/project/images/face_050201.webp b/project/images/face_050201.webp new file mode 100644 index 0000000..12dd2ff Binary files /dev/null and b/project/images/face_050201.webp differ diff --git a/project/images/face_050202.webp b/project/images/face_050202.webp new file mode 100644 index 0000000..0114c03 Binary files /dev/null and b/project/images/face_050202.webp differ diff --git a/project/images/face_050203.webp b/project/images/face_050203.webp new file mode 100644 index 0000000..fbaff96 Binary files /dev/null and b/project/images/face_050203.webp differ diff --git a/project/images/face_050204.webp b/project/images/face_050204.webp new file mode 100644 index 0000000..2c256b4 Binary files /dev/null and b/project/images/face_050204.webp differ diff --git a/project/images/face_050205.webp b/project/images/face_050205.webp new file mode 100644 index 0000000..7df8178 Binary files /dev/null and b/project/images/face_050205.webp differ diff --git a/project/images/face_050206.webp b/project/images/face_050206.webp new file mode 100644 index 0000000..96ae26d Binary files /dev/null and b/project/images/face_050206.webp differ diff --git a/project/images/face_050210.webp b/project/images/face_050210.webp new file mode 100644 index 0000000..abed1e3 Binary files /dev/null and b/project/images/face_050210.webp differ diff --git a/project/images/face_050212.webp b/project/images/face_050212.webp new file mode 100644 index 0000000..0f59bfe Binary files /dev/null and b/project/images/face_050212.webp differ diff --git a/project/images/face_050213.webp b/project/images/face_050213.webp new file mode 100644 index 0000000..564bd98 Binary files /dev/null and b/project/images/face_050213.webp differ diff --git a/project/images/face_050214.webp b/project/images/face_050214.webp new file mode 100644 index 0000000..169a477 Binary files /dev/null and b/project/images/face_050214.webp differ diff --git a/project/images/face_050215.webp b/project/images/face_050215.webp new file mode 100644 index 0000000..b1df32f Binary files /dev/null and b/project/images/face_050215.webp differ diff --git a/project/images/face_050216.webp b/project/images/face_050216.webp new file mode 100644 index 0000000..15ffca8 Binary files /dev/null and b/project/images/face_050216.webp differ diff --git a/project/images/face_050221.webp b/project/images/face_050221.webp new file mode 100644 index 0000000..1ae1b7b Binary files /dev/null and b/project/images/face_050221.webp differ diff --git a/project/images/face_050222.webp b/project/images/face_050222.webp new file mode 100644 index 0000000..b7b6467 Binary files /dev/null and b/project/images/face_050222.webp differ diff --git a/project/images/face_050223.webp b/project/images/face_050223.webp new file mode 100644 index 0000000..1e7c47a Binary files /dev/null and b/project/images/face_050223.webp differ diff --git a/project/images/face_050224.webp b/project/images/face_050224.webp new file mode 100644 index 0000000..fc5e21f Binary files /dev/null and b/project/images/face_050224.webp differ diff --git a/project/images/face_050225.webp b/project/images/face_050225.webp new file mode 100644 index 0000000..a5651ae Binary files /dev/null and b/project/images/face_050225.webp differ diff --git a/project/images/face_050226.webp b/project/images/face_050226.webp new file mode 100644 index 0000000..1f1d570 Binary files /dev/null and b/project/images/face_050226.webp differ diff --git a/project/images/face_050229.webp b/project/images/face_050229.webp new file mode 100644 index 0000000..571b5ac Binary files /dev/null and b/project/images/face_050229.webp differ diff --git a/project/images/face_050230.webp b/project/images/face_050230.webp new file mode 100644 index 0000000..056379e Binary files /dev/null and b/project/images/face_050230.webp differ diff --git a/project/images/face_050232.webp b/project/images/face_050232.webp new file mode 100644 index 0000000..25d18fe Binary files /dev/null and b/project/images/face_050232.webp differ diff --git a/project/images/face_050234.webp b/project/images/face_050234.webp new file mode 100644 index 0000000..837fdd5 Binary files /dev/null and b/project/images/face_050234.webp differ diff --git a/project/images/face_050235.webp b/project/images/face_050235.webp new file mode 100644 index 0000000..a96d4db Binary files /dev/null and b/project/images/face_050235.webp differ diff --git a/project/images/face_050237.webp b/project/images/face_050237.webp new file mode 100644 index 0000000..38e6649 Binary files /dev/null and b/project/images/face_050237.webp differ diff --git a/project/images/face_050241.webp b/project/images/face_050241.webp new file mode 100644 index 0000000..04ac926 Binary files /dev/null and b/project/images/face_050241.webp differ diff --git a/project/images/face_050242.webp b/project/images/face_050242.webp new file mode 100644 index 0000000..adf6280 Binary files /dev/null and b/project/images/face_050242.webp differ diff --git a/project/images/face_050243.webp b/project/images/face_050243.webp new file mode 100644 index 0000000..ee524ca Binary files /dev/null and b/project/images/face_050243.webp differ diff --git a/project/images/face_050244.webp b/project/images/face_050244.webp new file mode 100644 index 0000000..8df7199 Binary files /dev/null and b/project/images/face_050244.webp differ diff --git a/project/images/face_050245.webp b/project/images/face_050245.webp new file mode 100644 index 0000000..63b24ee Binary files /dev/null and b/project/images/face_050245.webp differ diff --git a/project/images/face_050246.webp b/project/images/face_050246.webp new file mode 100644 index 0000000..bf2f02b Binary files /dev/null and b/project/images/face_050246.webp differ diff --git a/project/images/face_050249.webp b/project/images/face_050249.webp new file mode 100644 index 0000000..2f77e72 Binary files /dev/null and b/project/images/face_050249.webp differ diff --git a/project/images/face_050250.webp b/project/images/face_050250.webp new file mode 100644 index 0000000..46e228a Binary files /dev/null and b/project/images/face_050250.webp differ diff --git a/project/images/face_050252.webp b/project/images/face_050252.webp new file mode 100644 index 0000000..3d2954f Binary files /dev/null and b/project/images/face_050252.webp differ diff --git a/project/images/face_050301.webp b/project/images/face_050301.webp new file mode 100644 index 0000000..8ed9e9c Binary files /dev/null and b/project/images/face_050301.webp differ diff --git a/project/images/face_050302.webp b/project/images/face_050302.webp new file mode 100644 index 0000000..dc5c9db Binary files /dev/null and b/project/images/face_050302.webp differ diff --git a/project/images/face_050303.webp b/project/images/face_050303.webp new file mode 100644 index 0000000..993e16a Binary files /dev/null and b/project/images/face_050303.webp differ diff --git a/project/images/face_050304.webp b/project/images/face_050304.webp new file mode 100644 index 0000000..8be3448 Binary files /dev/null and b/project/images/face_050304.webp differ diff --git a/project/images/face_050305.webp b/project/images/face_050305.webp new file mode 100644 index 0000000..caeaa80 Binary files /dev/null and b/project/images/face_050305.webp differ diff --git a/project/images/face_050306.webp b/project/images/face_050306.webp new file mode 100644 index 0000000..f84a944 Binary files /dev/null and b/project/images/face_050306.webp differ diff --git a/project/images/face_050307.webp b/project/images/face_050307.webp new file mode 100644 index 0000000..908a9bf Binary files /dev/null and b/project/images/face_050307.webp differ diff --git a/project/images/face_050308.webp b/project/images/face_050308.webp new file mode 100644 index 0000000..d716999 Binary files /dev/null and b/project/images/face_050308.webp differ diff --git a/project/images/face_050309.webp b/project/images/face_050309.webp new file mode 100644 index 0000000..3c7799f Binary files /dev/null and b/project/images/face_050309.webp differ diff --git a/project/images/face_050310.webp b/project/images/face_050310.webp new file mode 100644 index 0000000..47ff979 Binary files /dev/null and b/project/images/face_050310.webp differ diff --git a/project/images/face_050311.webp b/project/images/face_050311.webp new file mode 100644 index 0000000..5302cd3 Binary files /dev/null and b/project/images/face_050311.webp differ diff --git a/project/images/face_050313.webp b/project/images/face_050313.webp new file mode 100644 index 0000000..797d3d1 Binary files /dev/null and b/project/images/face_050313.webp differ diff --git a/project/images/face_050314.webp b/project/images/face_050314.webp new file mode 100644 index 0000000..5e80e7d Binary files /dev/null and b/project/images/face_050314.webp differ diff --git a/project/images/face_050315.webp b/project/images/face_050315.webp new file mode 100644 index 0000000..c663bef Binary files /dev/null and b/project/images/face_050315.webp differ diff --git a/project/images/face_050316.webp b/project/images/face_050316.webp new file mode 100644 index 0000000..1d359df Binary files /dev/null and b/project/images/face_050316.webp differ diff --git a/project/images/face_050317.webp b/project/images/face_050317.webp new file mode 100644 index 0000000..4dce220 Binary files /dev/null and b/project/images/face_050317.webp differ diff --git a/project/images/face_050321.webp b/project/images/face_050321.webp new file mode 100644 index 0000000..533f0ea Binary files /dev/null and b/project/images/face_050321.webp differ diff --git a/project/images/face_050322.webp b/project/images/face_050322.webp new file mode 100644 index 0000000..5a03bc7 Binary files /dev/null and b/project/images/face_050322.webp differ diff --git a/project/images/face_050323.webp b/project/images/face_050323.webp new file mode 100644 index 0000000..dd02280 Binary files /dev/null and b/project/images/face_050323.webp differ diff --git a/project/images/face_050324.webp b/project/images/face_050324.webp new file mode 100644 index 0000000..4faa9a0 Binary files /dev/null and b/project/images/face_050324.webp differ diff --git a/project/images/face_050325.webp b/project/images/face_050325.webp new file mode 100644 index 0000000..a0378a5 Binary files /dev/null and b/project/images/face_050325.webp differ diff --git a/project/images/face_050326.webp b/project/images/face_050326.webp new file mode 100644 index 0000000..8d23302 Binary files /dev/null and b/project/images/face_050326.webp differ diff --git a/project/images/face_050327.webp b/project/images/face_050327.webp new file mode 100644 index 0000000..5350f93 Binary files /dev/null and b/project/images/face_050327.webp differ diff --git a/project/images/face_050328.webp b/project/images/face_050328.webp new file mode 100644 index 0000000..75b8723 Binary files /dev/null and b/project/images/face_050328.webp differ diff --git a/project/images/face_050329.webp b/project/images/face_050329.webp new file mode 100644 index 0000000..35f592d Binary files /dev/null and b/project/images/face_050329.webp differ diff --git a/project/images/face_050330.webp b/project/images/face_050330.webp new file mode 100644 index 0000000..9256890 Binary files /dev/null and b/project/images/face_050330.webp differ diff --git a/project/images/face_050331.webp b/project/images/face_050331.webp new file mode 100644 index 0000000..9d6e3fe Binary files /dev/null and b/project/images/face_050331.webp differ diff --git a/project/images/face_050332.webp b/project/images/face_050332.webp new file mode 100644 index 0000000..1ef6645 Binary files /dev/null and b/project/images/face_050332.webp differ diff --git a/project/images/face_050333.webp b/project/images/face_050333.webp new file mode 100644 index 0000000..f4c7896 Binary files /dev/null and b/project/images/face_050333.webp differ diff --git a/project/images/face_050334.webp b/project/images/face_050334.webp new file mode 100644 index 0000000..7bbeeda Binary files /dev/null and b/project/images/face_050334.webp differ diff --git a/project/images/face_050335.webp b/project/images/face_050335.webp new file mode 100644 index 0000000..0c4208e Binary files /dev/null and b/project/images/face_050335.webp differ diff --git a/project/images/face_050336.webp b/project/images/face_050336.webp new file mode 100644 index 0000000..1d36bf1 Binary files /dev/null and b/project/images/face_050336.webp differ diff --git a/project/images/face_050337.webp b/project/images/face_050337.webp new file mode 100644 index 0000000..8ecf407 Binary files /dev/null and b/project/images/face_050337.webp differ diff --git a/project/images/face_050338.webp b/project/images/face_050338.webp new file mode 100644 index 0000000..afed9a4 Binary files /dev/null and b/project/images/face_050338.webp differ diff --git a/project/images/face_050341.webp b/project/images/face_050341.webp new file mode 100644 index 0000000..825cd77 Binary files /dev/null and b/project/images/face_050341.webp differ diff --git a/project/images/face_050342.webp b/project/images/face_050342.webp new file mode 100644 index 0000000..f9f8384 Binary files /dev/null and b/project/images/face_050342.webp differ diff --git a/project/images/face_050343.webp b/project/images/face_050343.webp new file mode 100644 index 0000000..5854061 Binary files /dev/null and b/project/images/face_050343.webp differ diff --git a/project/images/face_050344.webp b/project/images/face_050344.webp new file mode 100644 index 0000000..2e67cd9 Binary files /dev/null and b/project/images/face_050344.webp differ diff --git a/project/images/face_050345.webp b/project/images/face_050345.webp new file mode 100644 index 0000000..9a58f26 Binary files /dev/null and b/project/images/face_050345.webp differ diff --git a/project/images/face_050346.webp b/project/images/face_050346.webp new file mode 100644 index 0000000..27a2a09 Binary files /dev/null and b/project/images/face_050346.webp differ diff --git a/project/images/face_050347.webp b/project/images/face_050347.webp new file mode 100644 index 0000000..d937b33 Binary files /dev/null and b/project/images/face_050347.webp differ diff --git a/project/images/face_050348.webp b/project/images/face_050348.webp new file mode 100644 index 0000000..f8bb7f7 Binary files /dev/null and b/project/images/face_050348.webp differ diff --git a/project/images/face_050349.webp b/project/images/face_050349.webp new file mode 100644 index 0000000..59992cd Binary files /dev/null and b/project/images/face_050349.webp differ diff --git a/project/images/face_050350.webp b/project/images/face_050350.webp new file mode 100644 index 0000000..27d1e0e Binary files /dev/null and b/project/images/face_050350.webp differ diff --git a/project/images/face_050351.webp b/project/images/face_050351.webp new file mode 100644 index 0000000..b9da1fc Binary files /dev/null and b/project/images/face_050351.webp differ diff --git a/project/images/face_050352.webp b/project/images/face_050352.webp new file mode 100644 index 0000000..0eacd03 Binary files /dev/null and b/project/images/face_050352.webp differ diff --git a/project/images/face_050353.webp b/project/images/face_050353.webp new file mode 100644 index 0000000..75cc486 Binary files /dev/null and b/project/images/face_050353.webp differ diff --git a/project/images/face_050441.webp b/project/images/face_050441.webp new file mode 100644 index 0000000..04ac926 Binary files /dev/null and b/project/images/face_050441.webp differ diff --git a/project/images/face_050442.webp b/project/images/face_050442.webp new file mode 100644 index 0000000..adf6280 Binary files /dev/null and b/project/images/face_050442.webp differ diff --git a/project/images/face_050443.webp b/project/images/face_050443.webp new file mode 100644 index 0000000..ee524ca Binary files /dev/null and b/project/images/face_050443.webp differ diff --git a/project/images/face_050446.webp b/project/images/face_050446.webp new file mode 100644 index 0000000..bf2f02b Binary files /dev/null and b/project/images/face_050446.webp differ diff --git a/project/images/face_050447.webp b/project/images/face_050447.webp new file mode 100644 index 0000000..fa89346 Binary files /dev/null and b/project/images/face_050447.webp differ diff --git a/project/images/face_050451.webp b/project/images/face_050451.webp new file mode 100644 index 0000000..5bab333 Binary files /dev/null and b/project/images/face_050451.webp differ diff --git a/project/images/face_050452.webp b/project/images/face_050452.webp new file mode 100644 index 0000000..3d2954f Binary files /dev/null and b/project/images/face_050452.webp differ diff --git a/project/images/face_120101.webp b/project/images/face_120101.webp new file mode 100644 index 0000000..bc440ef Binary files /dev/null and b/project/images/face_120101.webp differ diff --git a/project/images/face_120102.webp b/project/images/face_120102.webp new file mode 100644 index 0000000..d88d401 Binary files /dev/null and b/project/images/face_120102.webp differ diff --git a/project/images/face_120103.webp b/project/images/face_120103.webp new file mode 100644 index 0000000..b1a6b80 Binary files /dev/null and b/project/images/face_120103.webp differ diff --git a/project/images/face_120104.webp b/project/images/face_120104.webp new file mode 100644 index 0000000..1b676d7 Binary files /dev/null and b/project/images/face_120104.webp differ diff --git a/project/images/face_120105.webp b/project/images/face_120105.webp new file mode 100644 index 0000000..a90ab21 Binary files /dev/null and b/project/images/face_120105.webp differ diff --git a/project/images/face_120106.webp b/project/images/face_120106.webp new file mode 100644 index 0000000..c9dc845 Binary files /dev/null and b/project/images/face_120106.webp differ diff --git a/project/images/face_120108.webp b/project/images/face_120108.webp new file mode 100644 index 0000000..ca624d5 Binary files /dev/null and b/project/images/face_120108.webp differ diff --git a/project/images/face_120111.webp b/project/images/face_120111.webp new file mode 100644 index 0000000..880953f Binary files /dev/null and b/project/images/face_120111.webp differ diff --git a/project/images/face_120112.webp b/project/images/face_120112.webp new file mode 100644 index 0000000..90c5083 Binary files /dev/null and b/project/images/face_120112.webp differ diff --git a/project/images/face_120113.webp b/project/images/face_120113.webp new file mode 100644 index 0000000..f012da0 Binary files /dev/null and b/project/images/face_120113.webp differ diff --git a/project/images/face_120121.webp b/project/images/face_120121.webp new file mode 100644 index 0000000..3a5a791 Binary files /dev/null and b/project/images/face_120121.webp differ diff --git a/project/images/face_120122.webp b/project/images/face_120122.webp new file mode 100644 index 0000000..17087be Binary files /dev/null and b/project/images/face_120122.webp differ diff --git a/project/images/face_120123.webp b/project/images/face_120123.webp new file mode 100644 index 0000000..bb97d21 Binary files /dev/null and b/project/images/face_120123.webp differ diff --git a/project/images/face_120124.webp b/project/images/face_120124.webp new file mode 100644 index 0000000..2208131 Binary files /dev/null and b/project/images/face_120124.webp differ diff --git a/project/images/face_120125.webp b/project/images/face_120125.webp new file mode 100644 index 0000000..2aa827b Binary files /dev/null and b/project/images/face_120125.webp differ diff --git a/project/images/face_120126.webp b/project/images/face_120126.webp new file mode 100644 index 0000000..b48d08c Binary files /dev/null and b/project/images/face_120126.webp differ diff --git a/project/images/face_120127.webp b/project/images/face_120127.webp new file mode 100644 index 0000000..997d46f Binary files /dev/null and b/project/images/face_120127.webp differ diff --git a/project/images/face_120128.webp b/project/images/face_120128.webp new file mode 100644 index 0000000..97208ac Binary files /dev/null and b/project/images/face_120128.webp differ diff --git a/project/images/face_120131.webp b/project/images/face_120131.webp new file mode 100644 index 0000000..610ca15 Binary files /dev/null and b/project/images/face_120131.webp differ diff --git a/project/images/face_120132.webp b/project/images/face_120132.webp new file mode 100644 index 0000000..3c0e085 Binary files /dev/null and b/project/images/face_120132.webp differ diff --git a/project/images/face_130101.webp b/project/images/face_130101.webp new file mode 100644 index 0000000..181b18e Binary files /dev/null and b/project/images/face_130101.webp differ diff --git a/project/images/face_130102.webp b/project/images/face_130102.webp new file mode 100644 index 0000000..c2d4499 Binary files /dev/null and b/project/images/face_130102.webp differ diff --git a/project/images/face_130103.webp b/project/images/face_130103.webp new file mode 100644 index 0000000..5c14feb Binary files /dev/null and b/project/images/face_130103.webp differ diff --git a/project/images/face_130104.webp b/project/images/face_130104.webp new file mode 100644 index 0000000..37a7ca6 Binary files /dev/null and b/project/images/face_130104.webp differ diff --git a/project/images/face_130105.webp b/project/images/face_130105.webp new file mode 100644 index 0000000..e8a31dd Binary files /dev/null and b/project/images/face_130105.webp differ diff --git a/project/images/face_130106.webp b/project/images/face_130106.webp new file mode 100644 index 0000000..0658862 Binary files /dev/null and b/project/images/face_130106.webp differ diff --git a/project/images/face_130107.webp b/project/images/face_130107.webp new file mode 100644 index 0000000..2e88e47 Binary files /dev/null and b/project/images/face_130107.webp differ diff --git a/project/images/face_130108.webp b/project/images/face_130108.webp new file mode 100644 index 0000000..32e28b1 Binary files /dev/null and b/project/images/face_130108.webp differ diff --git a/project/images/face_130109.webp b/project/images/face_130109.webp new file mode 100644 index 0000000..4f87b11 Binary files /dev/null and b/project/images/face_130109.webp differ diff --git a/project/images/face_130110.webp b/project/images/face_130110.webp new file mode 100644 index 0000000..d16f85b Binary files /dev/null and b/project/images/face_130110.webp differ diff --git a/project/images/face_130111.webp b/project/images/face_130111.webp new file mode 100644 index 0000000..fa141f4 Binary files /dev/null and b/project/images/face_130111.webp differ diff --git a/project/images/face_130112.webp b/project/images/face_130112.webp new file mode 100644 index 0000000..bdbb1fb Binary files /dev/null and b/project/images/face_130112.webp differ diff --git a/project/images/face_130113.webp b/project/images/face_130113.webp new file mode 100644 index 0000000..b5c4f3f Binary files /dev/null and b/project/images/face_130113.webp differ diff --git a/project/images/face_130121.webp b/project/images/face_130121.webp new file mode 100644 index 0000000..c5024f1 Binary files /dev/null and b/project/images/face_130121.webp differ diff --git a/project/images/face_130122.webp b/project/images/face_130122.webp new file mode 100644 index 0000000..a97578e Binary files /dev/null and b/project/images/face_130122.webp differ diff --git a/project/images/face_130123.webp b/project/images/face_130123.webp new file mode 100644 index 0000000..3595d7e Binary files /dev/null and b/project/images/face_130123.webp differ diff --git a/project/images/face_130124.webp b/project/images/face_130124.webp new file mode 100644 index 0000000..4ce2fdf Binary files /dev/null and b/project/images/face_130124.webp differ diff --git a/project/images/face_130125.webp b/project/images/face_130125.webp new file mode 100644 index 0000000..8c6790b Binary files /dev/null and b/project/images/face_130125.webp differ diff --git a/project/images/face_130126.webp b/project/images/face_130126.webp new file mode 100644 index 0000000..3d9c572 Binary files /dev/null and b/project/images/face_130126.webp differ diff --git a/project/images/face_130127.webp b/project/images/face_130127.webp new file mode 100644 index 0000000..7eff9ba Binary files /dev/null and b/project/images/face_130127.webp differ diff --git a/project/images/face_130128.webp b/project/images/face_130128.webp new file mode 100644 index 0000000..9286671 Binary files /dev/null and b/project/images/face_130128.webp differ diff --git a/project/images/face_130129.webp b/project/images/face_130129.webp new file mode 100644 index 0000000..b63370c Binary files /dev/null and b/project/images/face_130129.webp differ diff --git a/project/images/face_130130.webp b/project/images/face_130130.webp new file mode 100644 index 0000000..37a0caf Binary files /dev/null and b/project/images/face_130130.webp differ diff --git a/project/images/face_130131.webp b/project/images/face_130131.webp new file mode 100644 index 0000000..a7c34c8 Binary files /dev/null and b/project/images/face_130131.webp differ diff --git a/project/images/face_130132.webp b/project/images/face_130132.webp new file mode 100644 index 0000000..41d2160 Binary files /dev/null and b/project/images/face_130132.webp differ diff --git a/project/images/face_130201.webp b/project/images/face_130201.webp new file mode 100644 index 0000000..8428c50 Binary files /dev/null and b/project/images/face_130201.webp differ diff --git a/project/images/face_130202.webp b/project/images/face_130202.webp new file mode 100644 index 0000000..12f397b Binary files /dev/null and b/project/images/face_130202.webp differ diff --git a/project/images/face_130203.webp b/project/images/face_130203.webp new file mode 100644 index 0000000..47a4336 Binary files /dev/null and b/project/images/face_130203.webp differ diff --git a/project/images/face_130204.webp b/project/images/face_130204.webp new file mode 100644 index 0000000..8e826ff Binary files /dev/null and b/project/images/face_130204.webp differ diff --git a/project/images/face_130205.webp b/project/images/face_130205.webp new file mode 100644 index 0000000..d78ff3c Binary files /dev/null and b/project/images/face_130205.webp differ diff --git a/project/images/face_130206.webp b/project/images/face_130206.webp new file mode 100644 index 0000000..88ae09f Binary files /dev/null and b/project/images/face_130206.webp differ diff --git a/project/images/face_130207.webp b/project/images/face_130207.webp new file mode 100644 index 0000000..f2b7e46 Binary files /dev/null and b/project/images/face_130207.webp differ diff --git a/project/images/face_130208.webp b/project/images/face_130208.webp new file mode 100644 index 0000000..80c45d1 Binary files /dev/null and b/project/images/face_130208.webp differ diff --git a/project/images/face_130209.webp b/project/images/face_130209.webp new file mode 100644 index 0000000..968938d Binary files /dev/null and b/project/images/face_130209.webp differ diff --git a/project/images/face_130211.webp b/project/images/face_130211.webp new file mode 100644 index 0000000..91cd1ff Binary files /dev/null and b/project/images/face_130211.webp differ diff --git a/project/images/face_130212.webp b/project/images/face_130212.webp new file mode 100644 index 0000000..bacab45 Binary files /dev/null and b/project/images/face_130212.webp differ diff --git a/project/images/face_130213.webp b/project/images/face_130213.webp new file mode 100644 index 0000000..2277d0c Binary files /dev/null and b/project/images/face_130213.webp differ diff --git a/project/images/face_130221.webp b/project/images/face_130221.webp new file mode 100644 index 0000000..3527add Binary files /dev/null and b/project/images/face_130221.webp differ diff --git a/project/images/face_130222.webp b/project/images/face_130222.webp new file mode 100644 index 0000000..5244eac Binary files /dev/null and b/project/images/face_130222.webp differ diff --git a/project/images/face_130223.webp b/project/images/face_130223.webp new file mode 100644 index 0000000..eeea6dd Binary files /dev/null and b/project/images/face_130223.webp differ diff --git a/project/images/face_130224.webp b/project/images/face_130224.webp new file mode 100644 index 0000000..6aaf352 Binary files /dev/null and b/project/images/face_130224.webp differ diff --git a/project/images/face_130225.webp b/project/images/face_130225.webp new file mode 100644 index 0000000..d59cbe4 Binary files /dev/null and b/project/images/face_130225.webp differ diff --git a/project/images/face_130226.webp b/project/images/face_130226.webp new file mode 100644 index 0000000..465ecd7 Binary files /dev/null and b/project/images/face_130226.webp differ diff --git a/project/images/face_130227.webp b/project/images/face_130227.webp new file mode 100644 index 0000000..c9b80f0 Binary files /dev/null and b/project/images/face_130227.webp differ diff --git a/project/images/face_130228.webp b/project/images/face_130228.webp new file mode 100644 index 0000000..ab9a7e0 Binary files /dev/null and b/project/images/face_130228.webp differ diff --git a/project/images/face_130229.webp b/project/images/face_130229.webp new file mode 100644 index 0000000..28a8d6d Binary files /dev/null and b/project/images/face_130229.webp differ diff --git a/project/images/face_130230.webp b/project/images/face_130230.webp new file mode 100644 index 0000000..e350061 Binary files /dev/null and b/project/images/face_130230.webp differ diff --git a/project/images/face_130231.webp b/project/images/face_130231.webp new file mode 100644 index 0000000..7646d12 Binary files /dev/null and b/project/images/face_130231.webp differ diff --git a/project/images/face_320101.webp b/project/images/face_320101.webp new file mode 100644 index 0000000..125a136 Binary files /dev/null and b/project/images/face_320101.webp differ diff --git a/project/images/face_320102.webp b/project/images/face_320102.webp new file mode 100644 index 0000000..c4f770e Binary files /dev/null and b/project/images/face_320102.webp differ diff --git a/project/images/face_320103.webp b/project/images/face_320103.webp new file mode 100644 index 0000000..0bb5290 Binary files /dev/null and b/project/images/face_320103.webp differ diff --git a/project/images/face_320104.webp b/project/images/face_320104.webp new file mode 100644 index 0000000..69f8d08 Binary files /dev/null and b/project/images/face_320104.webp differ diff --git a/project/images/face_320105.webp b/project/images/face_320105.webp new file mode 100644 index 0000000..583df87 Binary files /dev/null and b/project/images/face_320105.webp differ diff --git a/project/images/face_320106.webp b/project/images/face_320106.webp new file mode 100644 index 0000000..e35e192 Binary files /dev/null and b/project/images/face_320106.webp differ diff --git a/project/images/face_320107.webp b/project/images/face_320107.webp new file mode 100644 index 0000000..cf1e0b0 Binary files /dev/null and b/project/images/face_320107.webp differ diff --git a/project/images/face_320108.webp b/project/images/face_320108.webp new file mode 100644 index 0000000..9d6178a Binary files /dev/null and b/project/images/face_320108.webp differ diff --git a/project/images/face_320109.webp b/project/images/face_320109.webp new file mode 100644 index 0000000..17dff8d Binary files /dev/null and b/project/images/face_320109.webp differ diff --git a/project/images/face_320121.webp b/project/images/face_320121.webp new file mode 100644 index 0000000..e78fb80 Binary files /dev/null and b/project/images/face_320121.webp differ diff --git a/project/images/face_320122.webp b/project/images/face_320122.webp new file mode 100644 index 0000000..53e5827 Binary files /dev/null and b/project/images/face_320122.webp differ diff --git a/project/images/face_320123.webp b/project/images/face_320123.webp new file mode 100644 index 0000000..03d4a51 Binary files /dev/null and b/project/images/face_320123.webp differ diff --git a/project/images/face_320124.webp b/project/images/face_320124.webp new file mode 100644 index 0000000..27d82a7 Binary files /dev/null and b/project/images/face_320124.webp differ diff --git a/project/images/face_320125.webp b/project/images/face_320125.webp new file mode 100644 index 0000000..ae2783c Binary files /dev/null and b/project/images/face_320125.webp differ diff --git a/project/images/face_320127.webp b/project/images/face_320127.webp new file mode 100644 index 0000000..4835679 Binary files /dev/null and b/project/images/face_320127.webp differ diff --git a/project/images/face_340101.webp b/project/images/face_340101.webp new file mode 100644 index 0000000..1eaf8fd Binary files /dev/null and b/project/images/face_340101.webp differ diff --git a/project/images/face_340102.webp b/project/images/face_340102.webp new file mode 100644 index 0000000..49d188e Binary files /dev/null and b/project/images/face_340102.webp differ diff --git a/project/images/face_340103.webp b/project/images/face_340103.webp new file mode 100644 index 0000000..da0a15f Binary files /dev/null and b/project/images/face_340103.webp differ diff --git a/project/images/face_340104.webp b/project/images/face_340104.webp new file mode 100644 index 0000000..6355dba Binary files /dev/null and b/project/images/face_340104.webp differ diff --git a/project/images/face_340105.webp b/project/images/face_340105.webp new file mode 100644 index 0000000..b92a56a Binary files /dev/null and b/project/images/face_340105.webp differ diff --git a/project/images/face_340106.webp b/project/images/face_340106.webp new file mode 100644 index 0000000..4e785ff Binary files /dev/null and b/project/images/face_340106.webp differ diff --git a/project/images/face_340107.webp b/project/images/face_340107.webp new file mode 100644 index 0000000..3c10a9d Binary files /dev/null and b/project/images/face_340107.webp differ diff --git a/project/images/face_340108.webp b/project/images/face_340108.webp new file mode 100644 index 0000000..f61f0f5 Binary files /dev/null and b/project/images/face_340108.webp differ diff --git a/project/images/face_340109.webp b/project/images/face_340109.webp new file mode 100644 index 0000000..ea81797 Binary files /dev/null and b/project/images/face_340109.webp differ diff --git a/project/images/face_340110.webp b/project/images/face_340110.webp new file mode 100644 index 0000000..4d3f3a1 Binary files /dev/null and b/project/images/face_340110.webp differ diff --git a/project/images/face_340111.webp b/project/images/face_340111.webp new file mode 100644 index 0000000..88a5708 Binary files /dev/null and b/project/images/face_340111.webp differ diff --git a/project/images/face_340112.webp b/project/images/face_340112.webp new file mode 100644 index 0000000..d3f11ec Binary files /dev/null and b/project/images/face_340112.webp differ diff --git a/project/images/face_340113.webp b/project/images/face_340113.webp new file mode 100644 index 0000000..f548732 Binary files /dev/null and b/project/images/face_340113.webp differ diff --git a/project/images/face_340114.webp b/project/images/face_340114.webp new file mode 100644 index 0000000..756c346 Binary files /dev/null and b/project/images/face_340114.webp differ diff --git a/project/images/face_340115.webp b/project/images/face_340115.webp new file mode 100644 index 0000000..47615b8 Binary files /dev/null and b/project/images/face_340115.webp differ diff --git a/project/images/face_430101.webp b/project/images/face_430101.webp new file mode 100644 index 0000000..1e769d8 Binary files /dev/null and b/project/images/face_430101.webp differ diff --git a/project/images/face_430102.webp b/project/images/face_430102.webp new file mode 100644 index 0000000..f147014 Binary files /dev/null and b/project/images/face_430102.webp differ diff --git a/project/images/face_430103.webp b/project/images/face_430103.webp new file mode 100644 index 0000000..93a9925 Binary files /dev/null and b/project/images/face_430103.webp differ diff --git a/project/images/face_430104.webp b/project/images/face_430104.webp new file mode 100644 index 0000000..9c9cb04 Binary files /dev/null and b/project/images/face_430104.webp differ diff --git a/project/images/face_430105.webp b/project/images/face_430105.webp new file mode 100644 index 0000000..a24dee1 Binary files /dev/null and b/project/images/face_430105.webp differ diff --git a/project/images/face_430106.webp b/project/images/face_430106.webp new file mode 100644 index 0000000..b5cfa7e Binary files /dev/null and b/project/images/face_430106.webp differ diff --git a/project/images/face_430107.webp b/project/images/face_430107.webp new file mode 100644 index 0000000..75d9b5e Binary files /dev/null and b/project/images/face_430107.webp differ diff --git a/project/images/face_430108.webp b/project/images/face_430108.webp new file mode 100644 index 0000000..48f8965 Binary files /dev/null and b/project/images/face_430108.webp differ diff --git a/project/images/face_440101.webp b/project/images/face_440101.webp new file mode 100644 index 0000000..37539c6 Binary files /dev/null and b/project/images/face_440101.webp differ diff --git a/project/images/face_440102.webp b/project/images/face_440102.webp new file mode 100644 index 0000000..96b1027 Binary files /dev/null and b/project/images/face_440102.webp differ diff --git a/project/images/face_440103.webp b/project/images/face_440103.webp new file mode 100644 index 0000000..76c6b72 Binary files /dev/null and b/project/images/face_440103.webp differ diff --git a/project/images/face_440104.webp b/project/images/face_440104.webp new file mode 100644 index 0000000..0092336 Binary files /dev/null and b/project/images/face_440104.webp differ diff --git a/project/images/face_440105.webp b/project/images/face_440105.webp new file mode 100644 index 0000000..536aff5 Binary files /dev/null and b/project/images/face_440105.webp differ diff --git a/project/images/face_440106.webp b/project/images/face_440106.webp new file mode 100644 index 0000000..7e53532 Binary files /dev/null and b/project/images/face_440106.webp differ diff --git a/project/images/face_440107.webp b/project/images/face_440107.webp new file mode 100644 index 0000000..a0e9fa5 Binary files /dev/null and b/project/images/face_440107.webp differ diff --git a/project/images/face_440108.webp b/project/images/face_440108.webp new file mode 100644 index 0000000..fa6aeab Binary files /dev/null and b/project/images/face_440108.webp differ diff --git a/project/images/face_440109.webp b/project/images/face_440109.webp new file mode 100644 index 0000000..f9713c4 Binary files /dev/null and b/project/images/face_440109.webp differ diff --git a/project/images/face_440110.webp b/project/images/face_440110.webp new file mode 100644 index 0000000..a5a91c8 Binary files /dev/null and b/project/images/face_440110.webp differ diff --git a/project/images/tati_050101.webp b/project/images/tati_050101.webp new file mode 100644 index 0000000..7e7b8bd Binary files /dev/null and b/project/images/tati_050101.webp differ diff --git a/project/images/tati_050101a.webp b/project/images/tati_050101a.webp new file mode 100644 index 0000000..261a3f1 Binary files /dev/null and b/project/images/tati_050101a.webp differ diff --git a/project/images/tati_050101y.webp b/project/images/tati_050101y.webp new file mode 100644 index 0000000..26fef52 Binary files /dev/null and b/project/images/tati_050101y.webp differ diff --git a/project/images/tati_050102.webp b/project/images/tati_050102.webp new file mode 100644 index 0000000..519308e Binary files /dev/null and b/project/images/tati_050102.webp differ diff --git a/project/images/tati_050102y.webp b/project/images/tati_050102y.webp new file mode 100644 index 0000000..46a5f3d Binary files /dev/null and b/project/images/tati_050102y.webp differ diff --git a/project/images/tati_050103.webp b/project/images/tati_050103.webp new file mode 100644 index 0000000..f655203 Binary files /dev/null and b/project/images/tati_050103.webp differ diff --git a/project/images/tati_050103a.webp b/project/images/tati_050103a.webp new file mode 100644 index 0000000..4d1a43b Binary files /dev/null and b/project/images/tati_050103a.webp differ diff --git a/project/images/tati_050103y.webp b/project/images/tati_050103y.webp new file mode 100644 index 0000000..243883a Binary files /dev/null and b/project/images/tati_050103y.webp differ diff --git a/project/images/tati_050104.webp b/project/images/tati_050104.webp new file mode 100644 index 0000000..8894735 Binary files /dev/null and b/project/images/tati_050104.webp differ diff --git a/project/images/tati_050104a.webp b/project/images/tati_050104a.webp new file mode 100644 index 0000000..4d58e4a Binary files /dev/null and b/project/images/tati_050104a.webp differ diff --git a/project/images/tati_050105.webp b/project/images/tati_050105.webp new file mode 100644 index 0000000..df6359e Binary files /dev/null and b/project/images/tati_050105.webp differ diff --git a/project/images/tati_050105a.webp b/project/images/tati_050105a.webp new file mode 100644 index 0000000..49f7c84 Binary files /dev/null and b/project/images/tati_050105a.webp differ diff --git a/project/images/tati_050105y.webp b/project/images/tati_050105y.webp new file mode 100644 index 0000000..3df3405 Binary files /dev/null and b/project/images/tati_050105y.webp differ diff --git a/project/images/tati_050106.webp b/project/images/tati_050106.webp new file mode 100644 index 0000000..86dc7c8 Binary files /dev/null and b/project/images/tati_050106.webp differ diff --git a/project/images/tati_050106y.webp b/project/images/tati_050106y.webp new file mode 100644 index 0000000..728f894 Binary files /dev/null and b/project/images/tati_050106y.webp differ diff --git a/project/images/tati_050107.webp b/project/images/tati_050107.webp new file mode 100644 index 0000000..354acde Binary files /dev/null and b/project/images/tati_050107.webp differ diff --git a/project/images/tati_050107a.webp b/project/images/tati_050107a.webp new file mode 100644 index 0000000..08e5d3d Binary files /dev/null and b/project/images/tati_050107a.webp differ diff --git a/project/images/tati_050107y.webp b/project/images/tati_050107y.webp new file mode 100644 index 0000000..a46ed5b Binary files /dev/null and b/project/images/tati_050107y.webp differ diff --git a/project/images/tati_050110.webp b/project/images/tati_050110.webp new file mode 100644 index 0000000..ad26d10 Binary files /dev/null and b/project/images/tati_050110.webp differ diff --git a/project/images/tati_050111.webp b/project/images/tati_050111.webp new file mode 100644 index 0000000..1956c65 Binary files /dev/null and b/project/images/tati_050111.webp differ diff --git a/project/images/tati_050111a.webp b/project/images/tati_050111a.webp new file mode 100644 index 0000000..ab59b9e Binary files /dev/null and b/project/images/tati_050111a.webp differ diff --git a/project/images/tati_050111y.webp b/project/images/tati_050111y.webp new file mode 100644 index 0000000..14012b2 Binary files /dev/null and b/project/images/tati_050111y.webp differ diff --git a/project/images/tati_050112.webp b/project/images/tati_050112.webp new file mode 100644 index 0000000..7752e4a Binary files /dev/null and b/project/images/tati_050112.webp differ diff --git a/project/images/tati_050113y.webp b/project/images/tati_050113y.webp new file mode 100644 index 0000000..2636fb3 Binary files /dev/null and b/project/images/tati_050113y.webp differ diff --git a/project/images/tati_050116.webp b/project/images/tati_050116.webp new file mode 100644 index 0000000..cba90ef Binary files /dev/null and b/project/images/tati_050116.webp differ diff --git a/project/images/tati_050116a.webp b/project/images/tati_050116a.webp new file mode 100644 index 0000000..48e2c94 Binary files /dev/null and b/project/images/tati_050116a.webp differ diff --git a/project/images/tati_050116y.webp b/project/images/tati_050116y.webp new file mode 100644 index 0000000..a3d1fa5 Binary files /dev/null and b/project/images/tati_050116y.webp differ diff --git a/project/images/tati_050117.webp b/project/images/tati_050117.webp new file mode 100644 index 0000000..153d707 Binary files /dev/null and b/project/images/tati_050117.webp differ diff --git a/project/images/tati_050121.webp b/project/images/tati_050121.webp new file mode 100644 index 0000000..0acc15b Binary files /dev/null and b/project/images/tati_050121.webp differ diff --git a/project/images/tati_050121a.webp b/project/images/tati_050121a.webp new file mode 100644 index 0000000..a802414 Binary files /dev/null and b/project/images/tati_050121a.webp differ diff --git a/project/images/tati_050121y.webp b/project/images/tati_050121y.webp new file mode 100644 index 0000000..cc5f03d Binary files /dev/null and b/project/images/tati_050121y.webp differ diff --git a/project/images/tati_050122.webp b/project/images/tati_050122.webp new file mode 100644 index 0000000..0ce76a0 Binary files /dev/null and b/project/images/tati_050122.webp differ diff --git a/project/images/tati_050122y.webp b/project/images/tati_050122y.webp new file mode 100644 index 0000000..3acdec6 Binary files /dev/null and b/project/images/tati_050122y.webp differ diff --git a/project/images/tati_050123.webp b/project/images/tati_050123.webp new file mode 100644 index 0000000..eb60f3a Binary files /dev/null and b/project/images/tati_050123.webp differ diff --git a/project/images/tati_050123a.webp b/project/images/tati_050123a.webp new file mode 100644 index 0000000..d2a7a6b Binary files /dev/null and b/project/images/tati_050123a.webp differ diff --git a/project/images/tati_050123y.webp b/project/images/tati_050123y.webp new file mode 100644 index 0000000..347ee03 Binary files /dev/null and b/project/images/tati_050123y.webp differ diff --git a/project/images/tati_050124.webp b/project/images/tati_050124.webp new file mode 100644 index 0000000..d7a8298 Binary files /dev/null and b/project/images/tati_050124.webp differ diff --git a/project/images/tati_050124a.webp b/project/images/tati_050124a.webp new file mode 100644 index 0000000..b2931cf Binary files /dev/null and b/project/images/tati_050124a.webp differ diff --git a/project/images/tati_050124y.webp b/project/images/tati_050124y.webp new file mode 100644 index 0000000..9ea35ee Binary files /dev/null and b/project/images/tati_050124y.webp differ diff --git a/project/images/tati_050125.webp b/project/images/tati_050125.webp new file mode 100644 index 0000000..ceeff74 Binary files /dev/null and b/project/images/tati_050125.webp differ diff --git a/project/images/tati_050125a.webp b/project/images/tati_050125a.webp new file mode 100644 index 0000000..f847625 Binary files /dev/null and b/project/images/tati_050125a.webp differ diff --git a/project/images/tati_050125y.webp b/project/images/tati_050125y.webp new file mode 100644 index 0000000..18d2682 Binary files /dev/null and b/project/images/tati_050125y.webp differ diff --git a/project/images/tati_050126.webp b/project/images/tati_050126.webp new file mode 100644 index 0000000..245c05b Binary files /dev/null and b/project/images/tati_050126.webp differ diff --git a/project/images/tati_050126y.webp b/project/images/tati_050126y.webp new file mode 100644 index 0000000..2b5f2b6 Binary files /dev/null and b/project/images/tati_050126y.webp differ diff --git a/project/images/tati_050127.webp b/project/images/tati_050127.webp new file mode 100644 index 0000000..19850d9 Binary files /dev/null and b/project/images/tati_050127.webp differ diff --git a/project/images/tati_050127a.webp b/project/images/tati_050127a.webp new file mode 100644 index 0000000..e3f69ce Binary files /dev/null and b/project/images/tati_050127a.webp differ diff --git a/project/images/tati_050128.webp b/project/images/tati_050128.webp new file mode 100644 index 0000000..179fbaf Binary files /dev/null and b/project/images/tati_050128.webp differ diff --git a/project/images/tati_050131.webp b/project/images/tati_050131.webp new file mode 100644 index 0000000..509ddfd Binary files /dev/null and b/project/images/tati_050131.webp differ diff --git a/project/images/tati_050131a.webp b/project/images/tati_050131a.webp new file mode 100644 index 0000000..58406d2 Binary files /dev/null and b/project/images/tati_050131a.webp differ diff --git a/project/images/tati_050131y.webp b/project/images/tati_050131y.webp new file mode 100644 index 0000000..92dbc60 Binary files /dev/null and b/project/images/tati_050131y.webp differ diff --git a/project/images/tati_050132.webp b/project/images/tati_050132.webp new file mode 100644 index 0000000..6a25ddd Binary files /dev/null and b/project/images/tati_050132.webp differ diff --git a/project/images/tati_050134.webp b/project/images/tati_050134.webp new file mode 100644 index 0000000..f1ea445 Binary files /dev/null and b/project/images/tati_050134.webp differ diff --git a/project/images/tati_050134y.webp b/project/images/tati_050134y.webp new file mode 100644 index 0000000..f09f864 Binary files /dev/null and b/project/images/tati_050134y.webp differ diff --git a/project/images/tati_050135.webp b/project/images/tati_050135.webp new file mode 100644 index 0000000..adab376 Binary files /dev/null and b/project/images/tati_050135.webp differ diff --git a/project/images/tati_050135y.webp b/project/images/tati_050135y.webp new file mode 100644 index 0000000..1266015 Binary files /dev/null and b/project/images/tati_050135y.webp differ diff --git a/project/images/tati_050136.webp b/project/images/tati_050136.webp new file mode 100644 index 0000000..a1a40d6 Binary files /dev/null and b/project/images/tati_050136.webp differ diff --git a/project/images/tati_050137.webp b/project/images/tati_050137.webp new file mode 100644 index 0000000..ca1fefc Binary files /dev/null and b/project/images/tati_050137.webp differ diff --git a/project/images/tati_050137y.webp b/project/images/tati_050137y.webp new file mode 100644 index 0000000..d536486 Binary files /dev/null and b/project/images/tati_050137y.webp differ diff --git a/project/images/tati_050141.webp b/project/images/tati_050141.webp new file mode 100644 index 0000000..a94ba95 Binary files /dev/null and b/project/images/tati_050141.webp differ diff --git a/project/images/tati_050141a.webp b/project/images/tati_050141a.webp new file mode 100644 index 0000000..57f3957 Binary files /dev/null and b/project/images/tati_050141a.webp differ diff --git a/project/images/tati_050141y.webp b/project/images/tati_050141y.webp new file mode 100644 index 0000000..e3df30e Binary files /dev/null and b/project/images/tati_050141y.webp differ diff --git a/project/images/tati_050142.webp b/project/images/tati_050142.webp new file mode 100644 index 0000000..499b32a Binary files /dev/null and b/project/images/tati_050142.webp differ diff --git a/project/images/tati_050142a.webp b/project/images/tati_050142a.webp new file mode 100644 index 0000000..93f43c9 Binary files /dev/null and b/project/images/tati_050142a.webp differ diff --git a/project/images/tati_050142y.webp b/project/images/tati_050142y.webp new file mode 100644 index 0000000..3e84bc5 Binary files /dev/null and b/project/images/tati_050142y.webp differ diff --git a/project/images/tati_050143.webp b/project/images/tati_050143.webp new file mode 100644 index 0000000..8244d15 Binary files /dev/null and b/project/images/tati_050143.webp differ diff --git a/project/images/tati_050143a.webp b/project/images/tati_050143a.webp new file mode 100644 index 0000000..9d7e93a Binary files /dev/null and b/project/images/tati_050143a.webp differ diff --git a/project/images/tati_050143y.webp b/project/images/tati_050143y.webp new file mode 100644 index 0000000..f7e03e0 Binary files /dev/null and b/project/images/tati_050143y.webp differ diff --git a/project/images/tati_050144.webp b/project/images/tati_050144.webp new file mode 100644 index 0000000..6ebae4b Binary files /dev/null and b/project/images/tati_050144.webp differ diff --git a/project/images/tati_050144a.webp b/project/images/tati_050144a.webp new file mode 100644 index 0000000..e0a932a Binary files /dev/null and b/project/images/tati_050144a.webp differ diff --git a/project/images/tati_050144y.webp b/project/images/tati_050144y.webp new file mode 100644 index 0000000..1beb0d4 Binary files /dev/null and b/project/images/tati_050144y.webp differ diff --git a/project/images/tati_050145.webp b/project/images/tati_050145.webp new file mode 100644 index 0000000..705ea09 Binary files /dev/null and b/project/images/tati_050145.webp differ diff --git a/project/images/tati_050145y.webp b/project/images/tati_050145y.webp new file mode 100644 index 0000000..e5e3e82 Binary files /dev/null and b/project/images/tati_050145y.webp differ diff --git a/project/images/tati_050146.webp b/project/images/tati_050146.webp new file mode 100644 index 0000000..2cc72ed Binary files /dev/null and b/project/images/tati_050146.webp differ diff --git a/project/images/tati_050146y.webp b/project/images/tati_050146y.webp new file mode 100644 index 0000000..1df3fe3 Binary files /dev/null and b/project/images/tati_050146y.webp differ diff --git a/project/images/tati_050147.webp b/project/images/tati_050147.webp new file mode 100644 index 0000000..ae5953d Binary files /dev/null and b/project/images/tati_050147.webp differ diff --git a/project/images/tati_050147y.webp b/project/images/tati_050147y.webp new file mode 100644 index 0000000..a2bf1c2 Binary files /dev/null and b/project/images/tati_050147y.webp differ diff --git a/project/images/tati_050151.webp b/project/images/tati_050151.webp new file mode 100644 index 0000000..867f631 Binary files /dev/null and b/project/images/tati_050151.webp differ diff --git a/project/images/tati_050151a.webp b/project/images/tati_050151a.webp new file mode 100644 index 0000000..0a6b036 Binary files /dev/null and b/project/images/tati_050151a.webp differ diff --git a/project/images/tati_050151y.webp b/project/images/tati_050151y.webp new file mode 100644 index 0000000..30399ac Binary files /dev/null and b/project/images/tati_050151y.webp differ diff --git a/project/images/tati_050152.webp b/project/images/tati_050152.webp new file mode 100644 index 0000000..fa61d27 Binary files /dev/null and b/project/images/tati_050152.webp differ diff --git a/project/images/tati_050152y.webp b/project/images/tati_050152y.webp new file mode 100644 index 0000000..d56f1f1 Binary files /dev/null and b/project/images/tati_050152y.webp differ diff --git a/project/images/tati_050201.webp b/project/images/tati_050201.webp new file mode 100644 index 0000000..126c435 Binary files /dev/null and b/project/images/tati_050201.webp differ diff --git a/project/images/tati_050201a.webp b/project/images/tati_050201a.webp new file mode 100644 index 0000000..5964960 Binary files /dev/null and b/project/images/tati_050201a.webp differ diff --git a/project/images/tati_050201y.webp b/project/images/tati_050201y.webp new file mode 100644 index 0000000..be1adf8 Binary files /dev/null and b/project/images/tati_050201y.webp differ diff --git a/project/images/tati_050202.webp b/project/images/tati_050202.webp new file mode 100644 index 0000000..fd9311d Binary files /dev/null and b/project/images/tati_050202.webp differ diff --git a/project/images/tati_050202a.webp b/project/images/tati_050202a.webp new file mode 100644 index 0000000..935244c Binary files /dev/null and b/project/images/tati_050202a.webp differ diff --git a/project/images/tati_050202y.webp b/project/images/tati_050202y.webp new file mode 100644 index 0000000..a15791f Binary files /dev/null and b/project/images/tati_050202y.webp differ diff --git a/project/images/tati_050203.webp b/project/images/tati_050203.webp new file mode 100644 index 0000000..4b0d2fc Binary files /dev/null and b/project/images/tati_050203.webp differ diff --git a/project/images/tati_050203y.webp b/project/images/tati_050203y.webp new file mode 100644 index 0000000..64c6173 Binary files /dev/null and b/project/images/tati_050203y.webp differ diff --git a/project/images/tati_050204a.webp b/project/images/tati_050204a.webp new file mode 100644 index 0000000..199883d Binary files /dev/null and b/project/images/tati_050204a.webp differ diff --git a/project/images/tati_050204y.webp b/project/images/tati_050204y.webp new file mode 100644 index 0000000..4d7672c Binary files /dev/null and b/project/images/tati_050204y.webp differ diff --git a/project/images/tati_050205.webp b/project/images/tati_050205.webp new file mode 100644 index 0000000..f58e1e1 Binary files /dev/null and b/project/images/tati_050205.webp differ diff --git a/project/images/tati_050205a.webp b/project/images/tati_050205a.webp new file mode 100644 index 0000000..549877e Binary files /dev/null and b/project/images/tati_050205a.webp differ diff --git a/project/images/tati_050205y.webp b/project/images/tati_050205y.webp new file mode 100644 index 0000000..6351984 Binary files /dev/null and b/project/images/tati_050205y.webp differ diff --git a/project/images/tati_050206.webp b/project/images/tati_050206.webp new file mode 100644 index 0000000..cd51e96 Binary files /dev/null and b/project/images/tati_050206.webp differ diff --git a/project/images/tati_050206a.webp b/project/images/tati_050206a.webp new file mode 100644 index 0000000..4435f23 Binary files /dev/null and b/project/images/tati_050206a.webp differ diff --git a/project/images/tati_050206y.webp b/project/images/tati_050206y.webp new file mode 100644 index 0000000..0b9a04b Binary files /dev/null and b/project/images/tati_050206y.webp differ diff --git a/project/images/tati_050210y.webp b/project/images/tati_050210y.webp new file mode 100644 index 0000000..2504e2c Binary files /dev/null and b/project/images/tati_050210y.webp differ diff --git a/project/images/tati_050215.webp b/project/images/tati_050215.webp new file mode 100644 index 0000000..adefc64 Binary files /dev/null and b/project/images/tati_050215.webp differ diff --git a/project/images/tati_050216.webp b/project/images/tati_050216.webp new file mode 100644 index 0000000..4fd50a0 Binary files /dev/null and b/project/images/tati_050216.webp differ diff --git a/project/images/tati_050221.webp b/project/images/tati_050221.webp new file mode 100644 index 0000000..6ed3bde Binary files /dev/null and b/project/images/tati_050221.webp differ diff --git a/project/images/tati_050221a.webp b/project/images/tati_050221a.webp new file mode 100644 index 0000000..683f2a6 Binary files /dev/null and b/project/images/tati_050221a.webp differ diff --git a/project/images/tati_050221y.webp b/project/images/tati_050221y.webp new file mode 100644 index 0000000..3984fe1 Binary files /dev/null and b/project/images/tati_050221y.webp differ diff --git a/project/images/tati_050222.webp b/project/images/tati_050222.webp new file mode 100644 index 0000000..3aac4c8 Binary files /dev/null and b/project/images/tati_050222.webp differ diff --git a/project/images/tati_050222a.webp b/project/images/tati_050222a.webp new file mode 100644 index 0000000..c3facb0 Binary files /dev/null and b/project/images/tati_050222a.webp differ diff --git a/project/images/tati_050222y.webp b/project/images/tati_050222y.webp new file mode 100644 index 0000000..522e0e6 Binary files /dev/null and b/project/images/tati_050222y.webp differ diff --git a/project/images/tati_050223.webp b/project/images/tati_050223.webp new file mode 100644 index 0000000..3f3151e Binary files /dev/null and b/project/images/tati_050223.webp differ diff --git a/project/images/tati_050224a.webp b/project/images/tati_050224a.webp new file mode 100644 index 0000000..3e3f828 Binary files /dev/null and b/project/images/tati_050224a.webp differ diff --git a/project/images/tati_050224y.webp b/project/images/tati_050224y.webp new file mode 100644 index 0000000..e647df5 Binary files /dev/null and b/project/images/tati_050224y.webp differ diff --git a/project/images/tati_050225.webp b/project/images/tati_050225.webp new file mode 100644 index 0000000..59c7c5c Binary files /dev/null and b/project/images/tati_050225.webp differ diff --git a/project/images/tati_050225a.webp b/project/images/tati_050225a.webp new file mode 100644 index 0000000..2bc0246 Binary files /dev/null and b/project/images/tati_050225a.webp differ diff --git a/project/images/tati_050225y.webp b/project/images/tati_050225y.webp new file mode 100644 index 0000000..6ff5676 Binary files /dev/null and b/project/images/tati_050225y.webp differ diff --git a/project/images/tati_050226.webp b/project/images/tati_050226.webp new file mode 100644 index 0000000..efd597a Binary files /dev/null and b/project/images/tati_050226.webp differ diff --git a/project/images/tati_050226a.webp b/project/images/tati_050226a.webp new file mode 100644 index 0000000..c652554 Binary files /dev/null and b/project/images/tati_050226a.webp differ diff --git a/project/images/tati_050229.webp b/project/images/tati_050229.webp new file mode 100644 index 0000000..a0915ef Binary files /dev/null and b/project/images/tati_050229.webp differ diff --git a/project/images/tati_050230y.webp b/project/images/tati_050230y.webp new file mode 100644 index 0000000..ac60ecf Binary files /dev/null and b/project/images/tati_050230y.webp differ diff --git a/project/images/tati_050232a.webp b/project/images/tati_050232a.webp new file mode 100644 index 0000000..e55f89b Binary files /dev/null and b/project/images/tati_050232a.webp differ diff --git a/project/images/tati_050234a.webp b/project/images/tati_050234a.webp new file mode 100644 index 0000000..3186bef Binary files /dev/null and b/project/images/tati_050234a.webp differ diff --git a/project/images/tati_050237.webp b/project/images/tati_050237.webp new file mode 100644 index 0000000..e56f654 Binary files /dev/null and b/project/images/tati_050237.webp differ diff --git a/project/images/tati_050241.webp b/project/images/tati_050241.webp new file mode 100644 index 0000000..97d09ab Binary files /dev/null and b/project/images/tati_050241.webp differ diff --git a/project/images/tati_050241a.webp b/project/images/tati_050241a.webp new file mode 100644 index 0000000..710adc3 Binary files /dev/null and b/project/images/tati_050241a.webp differ diff --git a/project/images/tati_050241y.webp b/project/images/tati_050241y.webp new file mode 100644 index 0000000..60df1c1 Binary files /dev/null and b/project/images/tati_050241y.webp differ diff --git a/project/images/tati_050242.webp b/project/images/tati_050242.webp new file mode 100644 index 0000000..cb969b8 Binary files /dev/null and b/project/images/tati_050242.webp differ diff --git a/project/images/tati_050242a.webp b/project/images/tati_050242a.webp new file mode 100644 index 0000000..070640d Binary files /dev/null and b/project/images/tati_050242a.webp differ diff --git a/project/images/tati_050242y.webp b/project/images/tati_050242y.webp new file mode 100644 index 0000000..e5c4840 Binary files /dev/null and b/project/images/tati_050242y.webp differ diff --git a/project/images/tati_050243.webp b/project/images/tati_050243.webp new file mode 100644 index 0000000..4371e03 Binary files /dev/null and b/project/images/tati_050243.webp differ diff --git a/project/images/tati_050243y.webp b/project/images/tati_050243y.webp new file mode 100644 index 0000000..d87f357 Binary files /dev/null and b/project/images/tati_050243y.webp differ diff --git a/project/images/tati_050244a.webp b/project/images/tati_050244a.webp new file mode 100644 index 0000000..4ba656b Binary files /dev/null and b/project/images/tati_050244a.webp differ diff --git a/project/images/tati_050244y.webp b/project/images/tati_050244y.webp new file mode 100644 index 0000000..a710959 Binary files /dev/null and b/project/images/tati_050244y.webp differ diff --git a/project/images/tati_050245.webp b/project/images/tati_050245.webp new file mode 100644 index 0000000..e8a0755 Binary files /dev/null and b/project/images/tati_050245.webp differ diff --git a/project/images/tati_050245a.webp b/project/images/tati_050245a.webp new file mode 100644 index 0000000..ef94266 Binary files /dev/null and b/project/images/tati_050245a.webp differ diff --git a/project/images/tati_050245y.webp b/project/images/tati_050245y.webp new file mode 100644 index 0000000..2b86e8b Binary files /dev/null and b/project/images/tati_050245y.webp differ diff --git a/project/images/tati_050252.webp b/project/images/tati_050252.webp new file mode 100644 index 0000000..192f1ae Binary files /dev/null and b/project/images/tati_050252.webp differ diff --git a/project/images/tati_050252y.webp b/project/images/tati_050252y.webp new file mode 100644 index 0000000..7b55af9 Binary files /dev/null and b/project/images/tati_050252y.webp differ diff --git a/project/images/tati_050301.webp b/project/images/tati_050301.webp new file mode 100644 index 0000000..e0a5682 Binary files /dev/null and b/project/images/tati_050301.webp differ diff --git a/project/images/tati_050301a.webp b/project/images/tati_050301a.webp new file mode 100644 index 0000000..598ab9f Binary files /dev/null and b/project/images/tati_050301a.webp differ diff --git a/project/images/tati_050301y.webp b/project/images/tati_050301y.webp new file mode 100644 index 0000000..1cf7669 Binary files /dev/null and b/project/images/tati_050301y.webp differ diff --git a/project/images/tati_050302.webp b/project/images/tati_050302.webp new file mode 100644 index 0000000..8eb4f7b Binary files /dev/null and b/project/images/tati_050302.webp differ diff --git a/project/images/tati_050303.webp b/project/images/tati_050303.webp new file mode 100644 index 0000000..561ff6d Binary files /dev/null and b/project/images/tati_050303.webp differ diff --git a/project/images/tati_050303y.webp b/project/images/tati_050303y.webp new file mode 100644 index 0000000..916859e Binary files /dev/null and b/project/images/tati_050303y.webp differ diff --git a/project/images/tati_050304.webp b/project/images/tati_050304.webp new file mode 100644 index 0000000..091d36b Binary files /dev/null and b/project/images/tati_050304.webp differ diff --git a/project/images/tati_050304y.webp b/project/images/tati_050304y.webp new file mode 100644 index 0000000..7587939 Binary files /dev/null and b/project/images/tati_050304y.webp differ diff --git a/project/images/tati_050305.webp b/project/images/tati_050305.webp new file mode 100644 index 0000000..7f6b7e2 Binary files /dev/null and b/project/images/tati_050305.webp differ diff --git a/project/images/tati_050305a.webp b/project/images/tati_050305a.webp new file mode 100644 index 0000000..0266053 Binary files /dev/null and b/project/images/tati_050305a.webp differ diff --git a/project/images/tati_050305y.webp b/project/images/tati_050305y.webp new file mode 100644 index 0000000..7ae4e59 Binary files /dev/null and b/project/images/tati_050305y.webp differ diff --git a/project/images/tati_050306.webp b/project/images/tati_050306.webp new file mode 100644 index 0000000..323b501 Binary files /dev/null and b/project/images/tati_050306.webp differ diff --git a/project/images/tati_050306y.webp b/project/images/tati_050306y.webp new file mode 100644 index 0000000..385c0f1 Binary files /dev/null and b/project/images/tati_050306y.webp differ diff --git a/project/images/tati_050307.webp b/project/images/tati_050307.webp new file mode 100644 index 0000000..b566868 Binary files /dev/null and b/project/images/tati_050307.webp differ diff --git a/project/images/tati_050307a.webp b/project/images/tati_050307a.webp new file mode 100644 index 0000000..f9d248b Binary files /dev/null and b/project/images/tati_050307a.webp differ diff --git a/project/images/tati_050307y.webp b/project/images/tati_050307y.webp new file mode 100644 index 0000000..bc14c5d Binary files /dev/null and b/project/images/tati_050307y.webp differ diff --git a/project/images/tati_050308.webp b/project/images/tati_050308.webp new file mode 100644 index 0000000..18e3096 Binary files /dev/null and b/project/images/tati_050308.webp differ diff --git a/project/images/tati_050309.webp b/project/images/tati_050309.webp new file mode 100644 index 0000000..7ffbd5d Binary files /dev/null and b/project/images/tati_050309.webp differ diff --git a/project/images/tati_050310.webp b/project/images/tati_050310.webp new file mode 100644 index 0000000..5e856aa Binary files /dev/null and b/project/images/tati_050310.webp differ diff --git a/project/images/tati_050311.webp b/project/images/tati_050311.webp new file mode 100644 index 0000000..f186eda Binary files /dev/null and b/project/images/tati_050311.webp differ diff --git a/project/images/tati_050311y.webp b/project/images/tati_050311y.webp new file mode 100644 index 0000000..59af9d8 Binary files /dev/null and b/project/images/tati_050311y.webp differ diff --git a/project/images/tati_050313.webp b/project/images/tati_050313.webp new file mode 100644 index 0000000..4660d8b Binary files /dev/null and b/project/images/tati_050313.webp differ diff --git a/project/images/tati_050314.webp b/project/images/tati_050314.webp new file mode 100644 index 0000000..4bf2a0e Binary files /dev/null and b/project/images/tati_050314.webp differ diff --git a/project/images/tati_050315.webp b/project/images/tati_050315.webp new file mode 100644 index 0000000..0ac2d72 Binary files /dev/null and b/project/images/tati_050315.webp differ diff --git a/project/images/tati_050316.webp b/project/images/tati_050316.webp new file mode 100644 index 0000000..cf4128a Binary files /dev/null and b/project/images/tati_050316.webp differ diff --git a/project/images/tati_050316y.webp b/project/images/tati_050316y.webp new file mode 100644 index 0000000..0b4df60 Binary files /dev/null and b/project/images/tati_050316y.webp differ diff --git a/project/images/tati_050317.webp b/project/images/tati_050317.webp new file mode 100644 index 0000000..3d3ce57 Binary files /dev/null and b/project/images/tati_050317.webp differ diff --git a/project/images/tati_050321.webp b/project/images/tati_050321.webp new file mode 100644 index 0000000..a9a8012 Binary files /dev/null and b/project/images/tati_050321.webp differ diff --git a/project/images/tati_050321a.webp b/project/images/tati_050321a.webp new file mode 100644 index 0000000..002e810 Binary files /dev/null and b/project/images/tati_050321a.webp differ diff --git a/project/images/tati_050321y.webp b/project/images/tati_050321y.webp new file mode 100644 index 0000000..6a8331a Binary files /dev/null and b/project/images/tati_050321y.webp differ diff --git a/project/images/tati_050322.webp b/project/images/tati_050322.webp new file mode 100644 index 0000000..1e7d827 Binary files /dev/null and b/project/images/tati_050322.webp differ diff --git a/project/images/tati_050322y.webp b/project/images/tati_050322y.webp new file mode 100644 index 0000000..3043a92 Binary files /dev/null and b/project/images/tati_050322y.webp differ diff --git a/project/images/tati_050323.webp b/project/images/tati_050323.webp new file mode 100644 index 0000000..9b2a380 Binary files /dev/null and b/project/images/tati_050323.webp differ diff --git a/project/images/tati_050324.webp b/project/images/tati_050324.webp new file mode 100644 index 0000000..ab2f3ce Binary files /dev/null and b/project/images/tati_050324.webp differ diff --git a/project/images/tati_050324a.webp b/project/images/tati_050324a.webp new file mode 100644 index 0000000..ac7fc74 Binary files /dev/null and b/project/images/tati_050324a.webp differ diff --git a/project/images/tati_050324y.webp b/project/images/tati_050324y.webp new file mode 100644 index 0000000..2e579cc Binary files /dev/null and b/project/images/tati_050324y.webp differ diff --git a/project/images/tati_050325.webp b/project/images/tati_050325.webp new file mode 100644 index 0000000..47ef3fb Binary files /dev/null and b/project/images/tati_050325.webp differ diff --git a/project/images/tati_050325a.webp b/project/images/tati_050325a.webp new file mode 100644 index 0000000..2f09eb1 Binary files /dev/null and b/project/images/tati_050325a.webp differ diff --git a/project/images/tati_050325y.webp b/project/images/tati_050325y.webp new file mode 100644 index 0000000..bd791d8 Binary files /dev/null and b/project/images/tati_050325y.webp differ diff --git a/project/images/tati_050326.webp b/project/images/tati_050326.webp new file mode 100644 index 0000000..0e866dc Binary files /dev/null and b/project/images/tati_050326.webp differ diff --git a/project/images/tati_050327.webp b/project/images/tati_050327.webp new file mode 100644 index 0000000..09dd7e9 Binary files /dev/null and b/project/images/tati_050327.webp differ diff --git a/project/images/tati_050327y.webp b/project/images/tati_050327y.webp new file mode 100644 index 0000000..837cbf5 Binary files /dev/null and b/project/images/tati_050327y.webp differ diff --git a/project/images/tati_050328.webp b/project/images/tati_050328.webp new file mode 100644 index 0000000..d8ad714 Binary files /dev/null and b/project/images/tati_050328.webp differ diff --git a/project/images/tati_050329.webp b/project/images/tati_050329.webp new file mode 100644 index 0000000..d8224a3 Binary files /dev/null and b/project/images/tati_050329.webp differ diff --git a/project/images/tati_050331.webp b/project/images/tati_050331.webp new file mode 100644 index 0000000..6a571cf Binary files /dev/null and b/project/images/tati_050331.webp differ diff --git a/project/images/tati_050331y.webp b/project/images/tati_050331y.webp new file mode 100644 index 0000000..86ccedd Binary files /dev/null and b/project/images/tati_050331y.webp differ diff --git a/project/images/tati_050332.webp b/project/images/tati_050332.webp new file mode 100644 index 0000000..f9b0ae2 Binary files /dev/null and b/project/images/tati_050332.webp differ diff --git a/project/images/tati_050333.webp b/project/images/tati_050333.webp new file mode 100644 index 0000000..0134380 Binary files /dev/null and b/project/images/tati_050333.webp differ diff --git a/project/images/tati_050334.webp b/project/images/tati_050334.webp new file mode 100644 index 0000000..2c6a11d Binary files /dev/null and b/project/images/tati_050334.webp differ diff --git a/project/images/tati_050334a.webp b/project/images/tati_050334a.webp new file mode 100644 index 0000000..11c3544 Binary files /dev/null and b/project/images/tati_050334a.webp differ diff --git a/project/images/tati_050335.webp b/project/images/tati_050335.webp new file mode 100644 index 0000000..f92b052 Binary files /dev/null and b/project/images/tati_050335.webp differ diff --git a/project/images/tati_050337.webp b/project/images/tati_050337.webp new file mode 100644 index 0000000..2a4e430 Binary files /dev/null and b/project/images/tati_050337.webp differ diff --git a/project/images/tati_050338.webp b/project/images/tati_050338.webp new file mode 100644 index 0000000..0497a5f Binary files /dev/null and b/project/images/tati_050338.webp differ diff --git a/project/images/tati_050338y.webp b/project/images/tati_050338y.webp new file mode 100644 index 0000000..076f83c Binary files /dev/null and b/project/images/tati_050338y.webp differ diff --git a/project/images/tati_050341.webp b/project/images/tati_050341.webp new file mode 100644 index 0000000..04d340e Binary files /dev/null and b/project/images/tati_050341.webp differ diff --git a/project/images/tati_050341a.webp b/project/images/tati_050341a.webp new file mode 100644 index 0000000..875a3f9 Binary files /dev/null and b/project/images/tati_050341a.webp differ diff --git a/project/images/tati_050341y.webp b/project/images/tati_050341y.webp new file mode 100644 index 0000000..72dba58 Binary files /dev/null and b/project/images/tati_050341y.webp differ diff --git a/project/images/tati_050342.webp b/project/images/tati_050342.webp new file mode 100644 index 0000000..62510c3 Binary files /dev/null and b/project/images/tati_050342.webp differ diff --git a/project/images/tati_050343.webp b/project/images/tati_050343.webp new file mode 100644 index 0000000..5a281c6 Binary files /dev/null and b/project/images/tati_050343.webp differ diff --git a/project/images/tati_050343y.webp b/project/images/tati_050343y.webp new file mode 100644 index 0000000..0604b3f Binary files /dev/null and b/project/images/tati_050343y.webp differ diff --git a/project/images/tati_050344.webp b/project/images/tati_050344.webp new file mode 100644 index 0000000..07ad5a8 Binary files /dev/null and b/project/images/tati_050344.webp differ diff --git a/project/images/tati_050345.webp b/project/images/tati_050345.webp new file mode 100644 index 0000000..a54aecf Binary files /dev/null and b/project/images/tati_050345.webp differ diff --git a/project/images/tati_050345a.webp b/project/images/tati_050345a.webp new file mode 100644 index 0000000..2242854 Binary files /dev/null and b/project/images/tati_050345a.webp differ diff --git a/project/images/tati_050345y.webp b/project/images/tati_050345y.webp new file mode 100644 index 0000000..6df2797 Binary files /dev/null and b/project/images/tati_050345y.webp differ diff --git a/project/images/tati_050346.webp b/project/images/tati_050346.webp new file mode 100644 index 0000000..cbb5b61 Binary files /dev/null and b/project/images/tati_050346.webp differ diff --git a/project/images/tati_050347.webp b/project/images/tati_050347.webp new file mode 100644 index 0000000..4f8265f Binary files /dev/null and b/project/images/tati_050347.webp differ diff --git a/project/images/tati_050348.webp b/project/images/tati_050348.webp new file mode 100644 index 0000000..8ffccb9 Binary files /dev/null and b/project/images/tati_050348.webp differ diff --git a/project/images/tati_050349.webp b/project/images/tati_050349.webp new file mode 100644 index 0000000..3ac485f Binary files /dev/null and b/project/images/tati_050349.webp differ diff --git a/project/images/tati_050351.webp b/project/images/tati_050351.webp new file mode 100644 index 0000000..7b70249 Binary files /dev/null and b/project/images/tati_050351.webp differ diff --git a/project/images/tati_050351y.webp b/project/images/tati_050351y.webp new file mode 100644 index 0000000..d2a0b93 Binary files /dev/null and b/project/images/tati_050351y.webp differ diff --git a/project/images/tati_050352.webp b/project/images/tati_050352.webp new file mode 100644 index 0000000..018c49d Binary files /dev/null and b/project/images/tati_050352.webp differ diff --git a/project/images/tati_050353.webp b/project/images/tati_050353.webp new file mode 100644 index 0000000..0f17f24 Binary files /dev/null and b/project/images/tati_050353.webp differ diff --git a/project/images/tati_050353y.webp b/project/images/tati_050353y.webp new file mode 100644 index 0000000..c422640 Binary files /dev/null and b/project/images/tati_050353y.webp differ diff --git a/project/images/tati_050441.webp b/project/images/tati_050441.webp new file mode 100644 index 0000000..2e7df0f Binary files /dev/null and b/project/images/tati_050441.webp differ diff --git a/project/images/tati_050443.webp b/project/images/tati_050443.webp new file mode 100644 index 0000000..a4189d0 Binary files /dev/null and b/project/images/tati_050443.webp differ diff --git a/project/images/tati_050443y.webp b/project/images/tati_050443y.webp new file mode 100644 index 0000000..4273394 Binary files /dev/null and b/project/images/tati_050443y.webp differ diff --git a/project/images/tati_050445.webp b/project/images/tati_050445.webp new file mode 100644 index 0000000..1a0313e Binary files /dev/null and b/project/images/tati_050445.webp differ diff --git a/project/images/tati_050445a.webp b/project/images/tati_050445a.webp new file mode 100644 index 0000000..a3e4da3 Binary files /dev/null and b/project/images/tati_050445a.webp differ diff --git a/project/images/tati_050445y.webp b/project/images/tati_050445y.webp new file mode 100644 index 0000000..99c60db Binary files /dev/null and b/project/images/tati_050445y.webp differ diff --git a/project/images/tati_050451.webp b/project/images/tati_050451.webp new file mode 100644 index 0000000..6020b87 Binary files /dev/null and b/project/images/tati_050451.webp differ diff --git a/project/images/tati_050451a.webp b/project/images/tati_050451a.webp new file mode 100644 index 0000000..9d970c7 Binary files /dev/null and b/project/images/tati_050451a.webp differ diff --git a/project/images/tati_050452.webp b/project/images/tati_050452.webp new file mode 100644 index 0000000..315d2cb Binary files /dev/null and b/project/images/tati_050452.webp differ diff --git a/project/images/tati_050452y.webp b/project/images/tati_050452y.webp new file mode 100644 index 0000000..6718c6d Binary files /dev/null and b/project/images/tati_050452y.webp differ diff --git a/project/images/tati_120101.webp b/project/images/tati_120101.webp new file mode 100644 index 0000000..b029f25 Binary files /dev/null and b/project/images/tati_120101.webp differ diff --git a/project/images/tati_120101y.webp b/project/images/tati_120101y.webp new file mode 100644 index 0000000..7e62b74 Binary files /dev/null and b/project/images/tati_120101y.webp differ diff --git a/project/images/tati_120102.webp b/project/images/tati_120102.webp new file mode 100644 index 0000000..15fb1ca Binary files /dev/null and b/project/images/tati_120102.webp differ diff --git a/project/images/tati_120102y.webp b/project/images/tati_120102y.webp new file mode 100644 index 0000000..57ea32c Binary files /dev/null and b/project/images/tati_120102y.webp differ diff --git a/project/images/tati_120103.webp b/project/images/tati_120103.webp new file mode 100644 index 0000000..1352df3 Binary files /dev/null and b/project/images/tati_120103.webp differ diff --git a/project/images/tati_120103y.webp b/project/images/tati_120103y.webp new file mode 100644 index 0000000..9af9fc8 Binary files /dev/null and b/project/images/tati_120103y.webp differ diff --git a/project/images/tati_120104.webp b/project/images/tati_120104.webp new file mode 100644 index 0000000..1435e70 Binary files /dev/null and b/project/images/tati_120104.webp differ diff --git a/project/images/tati_120104y.webp b/project/images/tati_120104y.webp new file mode 100644 index 0000000..112259f Binary files /dev/null and b/project/images/tati_120104y.webp differ diff --git a/project/images/tati_120105.webp b/project/images/tati_120105.webp new file mode 100644 index 0000000..40980f7 Binary files /dev/null and b/project/images/tati_120105.webp differ diff --git a/project/images/tati_120105y.webp b/project/images/tati_120105y.webp new file mode 100644 index 0000000..100d3f1 Binary files /dev/null and b/project/images/tati_120105y.webp differ diff --git a/project/images/tati_120106.webp b/project/images/tati_120106.webp new file mode 100644 index 0000000..d9f065d Binary files /dev/null and b/project/images/tati_120106.webp differ diff --git a/project/images/tati_120107.webp b/project/images/tati_120107.webp new file mode 100644 index 0000000..ac25b28 Binary files /dev/null and b/project/images/tati_120107.webp differ diff --git a/project/images/tati_120107y.webp b/project/images/tati_120107y.webp new file mode 100644 index 0000000..baf03db Binary files /dev/null and b/project/images/tati_120107y.webp differ diff --git a/project/images/tati_120108.webp b/project/images/tati_120108.webp new file mode 100644 index 0000000..e33b955 Binary files /dev/null and b/project/images/tati_120108.webp differ diff --git a/project/images/tati_120111.webp b/project/images/tati_120111.webp new file mode 100644 index 0000000..18fcb9f Binary files /dev/null and b/project/images/tati_120111.webp differ diff --git a/project/images/tati_120111y.webp b/project/images/tati_120111y.webp new file mode 100644 index 0000000..8d69d91 Binary files /dev/null and b/project/images/tati_120111y.webp differ diff --git a/project/images/tati_120112.webp b/project/images/tati_120112.webp new file mode 100644 index 0000000..6c662fd Binary files /dev/null and b/project/images/tati_120112.webp differ diff --git a/project/images/tati_120113.webp b/project/images/tati_120113.webp new file mode 100644 index 0000000..01e30af Binary files /dev/null and b/project/images/tati_120113.webp differ diff --git a/project/images/tati_120113y.webp b/project/images/tati_120113y.webp new file mode 100644 index 0000000..e91fd21 Binary files /dev/null and b/project/images/tati_120113y.webp differ diff --git a/project/images/tati_120121.webp b/project/images/tati_120121.webp new file mode 100644 index 0000000..d0ddee1 Binary files /dev/null and b/project/images/tati_120121.webp differ diff --git a/project/images/tati_120121y.webp b/project/images/tati_120121y.webp new file mode 100644 index 0000000..7b2d0e5 Binary files /dev/null and b/project/images/tati_120121y.webp differ diff --git a/project/images/tati_120122.webp b/project/images/tati_120122.webp new file mode 100644 index 0000000..3207f82 Binary files /dev/null and b/project/images/tati_120122.webp differ diff --git a/project/images/tati_120123.webp b/project/images/tati_120123.webp new file mode 100644 index 0000000..7d3d768 Binary files /dev/null and b/project/images/tati_120123.webp differ diff --git a/project/images/tati_120123y.webp b/project/images/tati_120123y.webp new file mode 100644 index 0000000..5b7df9e Binary files /dev/null and b/project/images/tati_120123y.webp differ diff --git a/project/images/tati_120125.webp b/project/images/tati_120125.webp new file mode 100644 index 0000000..8cfd59c Binary files /dev/null and b/project/images/tati_120125.webp differ diff --git a/project/images/tati_120125y.webp b/project/images/tati_120125y.webp new file mode 100644 index 0000000..e7e2fe9 Binary files /dev/null and b/project/images/tati_120125y.webp differ diff --git a/project/images/tati_120126.webp b/project/images/tati_120126.webp new file mode 100644 index 0000000..3e0f874 Binary files /dev/null and b/project/images/tati_120126.webp differ diff --git a/project/images/tati_120127.webp b/project/images/tati_120127.webp new file mode 100644 index 0000000..c010e67 Binary files /dev/null and b/project/images/tati_120127.webp differ diff --git a/project/images/tati_120127y.webp b/project/images/tati_120127y.webp new file mode 100644 index 0000000..020fcf8 Binary files /dev/null and b/project/images/tati_120127y.webp differ diff --git a/project/images/tati_120128.webp b/project/images/tati_120128.webp new file mode 100644 index 0000000..f1de7ab Binary files /dev/null and b/project/images/tati_120128.webp differ diff --git a/project/images/tati_120131.webp b/project/images/tati_120131.webp new file mode 100644 index 0000000..9e88925 Binary files /dev/null and b/project/images/tati_120131.webp differ diff --git a/project/images/tati_120132.webp b/project/images/tati_120132.webp new file mode 100644 index 0000000..f67a394 Binary files /dev/null and b/project/images/tati_120132.webp differ diff --git a/project/images/tati_340101.webp b/project/images/tati_340101.webp new file mode 100644 index 0000000..96724ce Binary files /dev/null and b/project/images/tati_340101.webp differ diff --git a/project/images/tati_340101a.webp b/project/images/tati_340101a.webp new file mode 100644 index 0000000..add8ba2 Binary files /dev/null and b/project/images/tati_340101a.webp differ diff --git a/project/images/tati_340101y.webp b/project/images/tati_340101y.webp new file mode 100644 index 0000000..bb04825 Binary files /dev/null and b/project/images/tati_340101y.webp differ diff --git a/project/images/tati_340102.webp b/project/images/tati_340102.webp new file mode 100644 index 0000000..769f51b Binary files /dev/null and b/project/images/tati_340102.webp differ diff --git a/project/images/tati_340102y.webp b/project/images/tati_340102y.webp new file mode 100644 index 0000000..7b6d59e Binary files /dev/null and b/project/images/tati_340102y.webp differ diff --git a/project/images/tati_340103.webp b/project/images/tati_340103.webp new file mode 100644 index 0000000..2a383eb Binary files /dev/null and b/project/images/tati_340103.webp differ diff --git a/project/images/tati_340103y.webp b/project/images/tati_340103y.webp new file mode 100644 index 0000000..6145491 Binary files /dev/null and b/project/images/tati_340103y.webp differ diff --git a/project/images/tati_340104.webp b/project/images/tati_340104.webp new file mode 100644 index 0000000..9728246 Binary files /dev/null and b/project/images/tati_340104.webp differ diff --git a/project/images/tati_340104y.webp b/project/images/tati_340104y.webp new file mode 100644 index 0000000..5482404 Binary files /dev/null and b/project/images/tati_340104y.webp differ diff --git a/project/images/tati_340105.webp b/project/images/tati_340105.webp new file mode 100644 index 0000000..dd76fb8 Binary files /dev/null and b/project/images/tati_340105.webp differ diff --git a/project/images/tati_340105a.webp b/project/images/tati_340105a.webp new file mode 100644 index 0000000..681610a Binary files /dev/null and b/project/images/tati_340105a.webp differ diff --git a/project/images/tati_340105y.webp b/project/images/tati_340105y.webp new file mode 100644 index 0000000..bad076a Binary files /dev/null and b/project/images/tati_340105y.webp differ diff --git a/project/images/tati_340106.webp b/project/images/tati_340106.webp new file mode 100644 index 0000000..4be5842 Binary files /dev/null and b/project/images/tati_340106.webp differ diff --git a/project/images/tati_340106y.webp b/project/images/tati_340106y.webp new file mode 100644 index 0000000..d9b8110 Binary files /dev/null and b/project/images/tati_340106y.webp differ diff --git a/project/images/tati_340107.webp b/project/images/tati_340107.webp new file mode 100644 index 0000000..6923456 Binary files /dev/null and b/project/images/tati_340107.webp differ diff --git a/project/images/tati_340107y.webp b/project/images/tati_340107y.webp new file mode 100644 index 0000000..05fb151 Binary files /dev/null and b/project/images/tati_340107y.webp differ diff --git a/project/images/tati_340108.webp b/project/images/tati_340108.webp new file mode 100644 index 0000000..46e1ce1 Binary files /dev/null and b/project/images/tati_340108.webp differ diff --git a/project/images/tati_340108y.webp b/project/images/tati_340108y.webp new file mode 100644 index 0000000..a5faccc Binary files /dev/null and b/project/images/tati_340108y.webp differ diff --git a/project/images/tati_340109.webp b/project/images/tati_340109.webp new file mode 100644 index 0000000..7929c9a Binary files /dev/null and b/project/images/tati_340109.webp differ diff --git a/project/images/tati_340109y.webp b/project/images/tati_340109y.webp new file mode 100644 index 0000000..90a58f3 Binary files /dev/null and b/project/images/tati_340109y.webp differ diff --git a/project/images/tati_340110.webp b/project/images/tati_340110.webp new file mode 100644 index 0000000..bc4d976 Binary files /dev/null and b/project/images/tati_340110.webp differ diff --git a/project/images/tati_340110y.webp b/project/images/tati_340110y.webp new file mode 100644 index 0000000..20491bf Binary files /dev/null and b/project/images/tati_340110y.webp differ diff --git a/project/images/tati_340111.webp b/project/images/tati_340111.webp new file mode 100644 index 0000000..e8d251d Binary files /dev/null and b/project/images/tati_340111.webp differ diff --git a/project/images/tati_340111y.webp b/project/images/tati_340111y.webp new file mode 100644 index 0000000..1681178 Binary files /dev/null and b/project/images/tati_340111y.webp differ diff --git a/project/images/tati_340112.webp b/project/images/tati_340112.webp new file mode 100644 index 0000000..2786dcc Binary files /dev/null and b/project/images/tati_340112.webp differ diff --git a/project/images/tati_340112a.webp b/project/images/tati_340112a.webp new file mode 100644 index 0000000..37a492c Binary files /dev/null and b/project/images/tati_340112a.webp differ diff --git a/project/images/tati_340112y.webp b/project/images/tati_340112y.webp new file mode 100644 index 0000000..f20b1e4 Binary files /dev/null and b/project/images/tati_340112y.webp differ diff --git a/project/images/tati_340113.webp b/project/images/tati_340113.webp new file mode 100644 index 0000000..08b5954 Binary files /dev/null and b/project/images/tati_340113.webp differ diff --git a/project/images/tati_340113y.webp b/project/images/tati_340113y.webp new file mode 100644 index 0000000..0316326 Binary files /dev/null and b/project/images/tati_340113y.webp differ diff --git a/project/images/tati_340114.webp b/project/images/tati_340114.webp new file mode 100644 index 0000000..3f7da16 Binary files /dev/null and b/project/images/tati_340114.webp differ diff --git a/project/images/tati_340114y.webp b/project/images/tati_340114y.webp new file mode 100644 index 0000000..ee21221 Binary files /dev/null and b/project/images/tati_340114y.webp differ diff --git a/project/images/tati_340115.webp b/project/images/tati_340115.webp new file mode 100644 index 0000000..f8cd30d Binary files /dev/null and b/project/images/tati_340115.webp differ diff --git a/project/images/tati_430101.webp b/project/images/tati_430101.webp new file mode 100644 index 0000000..82d2e68 Binary files /dev/null and b/project/images/tati_430101.webp differ diff --git a/project/images/tati_430101a.webp b/project/images/tati_430101a.webp new file mode 100644 index 0000000..153d99f Binary files /dev/null and b/project/images/tati_430101a.webp differ diff --git a/project/images/tati_430101y.webp b/project/images/tati_430101y.webp new file mode 100644 index 0000000..fa51d26 Binary files /dev/null and b/project/images/tati_430101y.webp differ diff --git a/project/images/tati_430102.webp b/project/images/tati_430102.webp new file mode 100644 index 0000000..428e27f Binary files /dev/null and b/project/images/tati_430102.webp differ diff --git a/project/images/tati_430102a.webp b/project/images/tati_430102a.webp new file mode 100644 index 0000000..045891a Binary files /dev/null and b/project/images/tati_430102a.webp differ diff --git a/project/images/tati_430102y.webp b/project/images/tati_430102y.webp new file mode 100644 index 0000000..7f0c790 Binary files /dev/null and b/project/images/tati_430102y.webp differ diff --git a/project/images/tati_430103.webp b/project/images/tati_430103.webp new file mode 100644 index 0000000..3328371 Binary files /dev/null and b/project/images/tati_430103.webp differ diff --git a/project/images/tati_430103a.webp b/project/images/tati_430103a.webp new file mode 100644 index 0000000..5954ed6 Binary files /dev/null and b/project/images/tati_430103a.webp differ diff --git a/project/images/tati_430103y.webp b/project/images/tati_430103y.webp new file mode 100644 index 0000000..852203c Binary files /dev/null and b/project/images/tati_430103y.webp differ diff --git a/project/images/tati_430104.webp b/project/images/tati_430104.webp new file mode 100644 index 0000000..63618c6 Binary files /dev/null and b/project/images/tati_430104.webp differ diff --git a/project/images/tati_430105.webp b/project/images/tati_430105.webp new file mode 100644 index 0000000..3b913ca Binary files /dev/null and b/project/images/tati_430105.webp differ diff --git a/project/images/tati_430105a.webp b/project/images/tati_430105a.webp new file mode 100644 index 0000000..62279c2 Binary files /dev/null and b/project/images/tati_430105a.webp differ diff --git a/project/images/tati_430105y.webp b/project/images/tati_430105y.webp new file mode 100644 index 0000000..d2c47f7 Binary files /dev/null and b/project/images/tati_430105y.webp differ diff --git a/project/images/tati_430106.webp b/project/images/tati_430106.webp new file mode 100644 index 0000000..38e047f Binary files /dev/null and b/project/images/tati_430106.webp differ diff --git a/project/images/tati_430106a.webp b/project/images/tati_430106a.webp new file mode 100644 index 0000000..a448e29 Binary files /dev/null and b/project/images/tati_430106a.webp differ diff --git a/project/images/tati_430106y.webp b/project/images/tati_430106y.webp new file mode 100644 index 0000000..3fb8ee5 Binary files /dev/null and b/project/images/tati_430106y.webp differ diff --git a/project/images/tati_430107.webp b/project/images/tati_430107.webp new file mode 100644 index 0000000..5ee8605 Binary files /dev/null and b/project/images/tati_430107.webp differ diff --git a/project/images/tati_430107y.webp b/project/images/tati_430107y.webp new file mode 100644 index 0000000..d8dd713 Binary files /dev/null and b/project/images/tati_430107y.webp differ diff --git a/project/images/tati_430108.webp b/project/images/tati_430108.webp new file mode 100644 index 0000000..088b83f Binary files /dev/null and b/project/images/tati_430108.webp differ diff --git a/project/images/tati_430108a.webp b/project/images/tati_430108a.webp new file mode 100644 index 0000000..5699299 Binary files /dev/null and b/project/images/tati_430108a.webp differ diff --git a/project/images/tati_430108y.webp b/project/images/tati_430108y.webp new file mode 100644 index 0000000..a2a6fc4 Binary files /dev/null and b/project/images/tati_430108y.webp differ diff --git a/project/images/tati_440101.webp b/project/images/tati_440101.webp new file mode 100644 index 0000000..13b1e48 Binary files /dev/null and b/project/images/tati_440101.webp differ diff --git a/project/images/tati_440101y.webp b/project/images/tati_440101y.webp new file mode 100644 index 0000000..2b632ae Binary files /dev/null and b/project/images/tati_440101y.webp differ diff --git a/project/images/tati_440103.webp b/project/images/tati_440103.webp new file mode 100644 index 0000000..5e96a78 Binary files /dev/null and b/project/images/tati_440103.webp differ diff --git a/project/images/tati_440104.webp b/project/images/tati_440104.webp new file mode 100644 index 0000000..0953eba Binary files /dev/null and b/project/images/tati_440104.webp differ diff --git a/project/images/tati_440105.webp b/project/images/tati_440105.webp new file mode 100644 index 0000000..abbd82e Binary files /dev/null and b/project/images/tati_440105.webp differ diff --git a/project/images/tati_440106.webp b/project/images/tati_440106.webp new file mode 100644 index 0000000..e8fe7e5 Binary files /dev/null and b/project/images/tati_440106.webp differ diff --git a/project/images/tati_440108.webp b/project/images/tati_440108.webp new file mode 100644 index 0000000..412223f Binary files /dev/null and b/project/images/tati_440108.webp differ diff --git a/project/images/tati_z340101.webp b/project/images/tati_z340101.webp new file mode 100644 index 0000000..5387c08 Binary files /dev/null and b/project/images/tati_z340101.webp differ diff --git a/project/images/tati_z340102.webp b/project/images/tati_z340102.webp new file mode 100644 index 0000000..e3db89f Binary files /dev/null and b/project/images/tati_z340102.webp differ diff --git a/project/images/tati_z340103.webp b/project/images/tati_z340103.webp new file mode 100644 index 0000000..1850508 Binary files /dev/null and b/project/images/tati_z340103.webp differ diff --git a/project/images/tati_z340104.webp b/project/images/tati_z340104.webp new file mode 100644 index 0000000..1300940 Binary files /dev/null and b/project/images/tati_z340104.webp differ diff --git a/project/images/tati_z340105.webp b/project/images/tati_z340105.webp new file mode 100644 index 0000000..505a09c Binary files /dev/null and b/project/images/tati_z340105.webp differ diff --git a/project/images/tati_z340106.webp b/project/images/tati_z340106.webp new file mode 100644 index 0000000..0911177 Binary files /dev/null and b/project/images/tati_z340106.webp differ diff --git a/project/images/tati_z340107.webp b/project/images/tati_z340107.webp new file mode 100644 index 0000000..2241f44 Binary files /dev/null and b/project/images/tati_z340107.webp differ diff --git a/project/images/tati_z340108.webp b/project/images/tati_z340108.webp new file mode 100644 index 0000000..f4c6f2b Binary files /dev/null and b/project/images/tati_z340108.webp differ diff --git a/project/images/tati_z340109.webp b/project/images/tati_z340109.webp new file mode 100644 index 0000000..7e836f5 Binary files /dev/null and b/project/images/tati_z340109.webp differ diff --git a/project/images/tati_z340110.webp b/project/images/tati_z340110.webp new file mode 100644 index 0000000..61c5610 Binary files /dev/null and b/project/images/tati_z340110.webp differ diff --git a/project/images/tati_z340111.webp b/project/images/tati_z340111.webp new file mode 100644 index 0000000..e7b3efd Binary files /dev/null and b/project/images/tati_z340111.webp differ diff --git a/project/images/tati_z340112.webp b/project/images/tati_z340112.webp new file mode 100644 index 0000000..c46c0c0 Binary files /dev/null and b/project/images/tati_z340112.webp differ diff --git a/project/images/tati_z340113.webp b/project/images/tati_z340113.webp new file mode 100644 index 0000000..2284cda Binary files /dev/null and b/project/images/tati_z340113.webp differ diff --git a/project/images/tati_z340114.webp b/project/images/tati_z340114.webp new file mode 100644 index 0000000..1c1f0dc Binary files /dev/null and b/project/images/tati_z340114.webp differ diff --git a/project/images/tati_z340115.webp b/project/images/tati_z340115.webp new file mode 100644 index 0000000..9a1621c Binary files /dev/null and b/project/images/tati_z340115.webp differ diff --git a/project/items.js b/project/items.js index 05dcc9c..fddc8ac 100644 --- a/project/items.js +++ b/project/items.js @@ -146,7 +146,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "sword1": { "cls": "equips", "name": "铁剑", - "text": "一把很普通的铁剑", + "text": "一把普通的铁剑", "equip": { "type": 0, "animate": "sword", @@ -224,17 +224,22 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "equipCls": "匕首" }, "shield0": { - "cls": "items", + "cls": "equips", "name": "破旧的盾", "text": "一个很破旧的铁盾", "equip": { - "type": 1, + "type": 2, "value": { - "def": 0 + "mdef": -5, + "def": 10 + }, + "percentage": { + "def": 10 } }, "itemEffect": "core.status.hero.def += 0", - "itemEffectTip": ",防御+0" + "itemEffectTip": ",防御+0", + "equipCls": "护具" }, "shield1": { "cls": "equips", diff --git a/project/plugins.js b/project/plugins.js index 7e8f37f..757e5bd 100644 --- a/project/plugins.js +++ b/project/plugins.js @@ -1,222 +1,226 @@ -var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = -{ - "init": function () { - this._afterLoadResources = function () { - // 本函数将在所有资源加载完毕后,游戏开启前被执行 - core.ui.statusBar.init(); - core.registerEvent("changeMouse", function (data) { - if (!main.replayChecking && !core.isReplaying()) - core.changeMouse( - data.icon, - data.div, - data.translate[0], - data.translate[1], - data.scale[0], - data.scale[1], - data.angel, - data.px, - data.py - ); - core.doAction(); - }); - core.registerEvent("removeMouse", function (data) { - if (!main.replayChecking && !core.isReplaying()) - core.removeMouse(data.div); - core.doAction(); - }); - core.registerEvent("addPop", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - data.value = core.replaceText(data.value); - core.addPop( - data.value, - data.px, - data.py, - data.color, - data.boldColor, - data.left, - data.jump, - data.time, - data.show, - data.font, - data.speed - ); - } - core.doAction(); - }); - core.registerEvent("drawWarning", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - data.text = core.replaceText(data.text); - data.text2 = core.replaceText(data.text2); - core.drawWarning( - data.x, - data.y, - data.size, - data?.text, - data?.text2, - data?.warning - ); - setTimeout(() => core.doAction(), 3100); - } else { - core.doAction(); - } - }); - core.registerEvent("playStereo", function (data) { - if (!main.replayChecking && !core.isReplaying()) - core.playStereo(data.name, data.left, data.right, data.split); - core.doAction(); - }); - core.registerEvent("moveStereo", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - const id = core.playStereo( - data.name, - data.left, - data.right, - data.split - ); - core.moveStereo(id, data.leftTo, data.rightTo, data.time); - } - core.doAction(); - }); - core.registerEvent("over", function (data) { - let image = data.image ?? ""; - let time = data.time ?? 3000; - let sound = data.sound ?? ""; - let textColor = data.textColor ?? "#FFFFFF"; - let boldColor = data.boldColor ?? "#000000"; - let font = data.font ?? "bold 48px Verdana"; - let text = data.text ?? ""; - let hidetime = data.hidetime ?? 100; - if (!main.replayChecking && !core.isReplaying()) { - core.over( - image, - data.memory, - time, - hidetime, - sound, - textColor, - boldColor, - font, - text - ); - } else { - core.doAction(); - } - }); - core.registerEvent("changebg", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.changebg( - data.img1, - data.memory1, - data.img2, - data.memory2, - data.time, - data.style - ); - } else { - core.doAction(); - } - }); - core.registerEvent("overlist", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.overlist( - data.image, - data.memory, - data.hidetime || 30, - data.list || [{ - text: "", - sound: "", - time: 50, - textColor: "#FFFFFF", - boldColor: "#000000", - font: "bold 48px Verdana", - frame: 0, - }, ] - ); - } else { - core.doAction(); - } - }); - core.registerEvent("op", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.openvideo(); - } else { - core.doAction(); - } - }); - core.registerEvent("animationDrawable", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.animationDrawable( - data.allFarme, - data.color, - data.globalAlpha, - data.imageList, - data.soundList - ); - } else { - core.doAction(); - } - }); - core.registerEvent("setanimate", function (data) { +var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { + init: function () { + this._afterLoadResources = function () { + // 本函数将在所有资源加载完毕后,游戏开启前被执行 + core.ui.statusBar.init(); + core.registerEvent("changeMouse", function (data) { + if (!main.replayChecking && !core.isReplaying()) + core.changeMouse( + data.icon, + data.div, + data.translate[0], + data.translate[1], + data.scale[0], + data.scale[1], + data.angel, + data.px, + data.py + ); + core.doAction(); + }); + core.registerEvent("removeMouse", function (data) { + if (!main.replayChecking && !core.isReplaying()) + core.removeMouse(data.div); + core.doAction(); + }); + core.registerEvent("addPop", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + data.value = core.replaceText(data.value); + core.addPop( + data.value, + data.px, + data.py, + data.color, + data.boldColor, + data.left, + data.jump, + data.time, + data.show, + data.font, + data.speed + ); + } + core.doAction(); + }); + core.registerEvent("drawWarning", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + data.text = core.replaceText(data.text); + data.text2 = core.replaceText(data.text2); + core.drawWarning( + data.x, + data.y, + data.size, + data?.text, + data?.text2, + data?.warning + ); + setTimeout(() => core.doAction(), 3100); + } else { + core.doAction(); + } + }); + core.registerEvent("playStereo", function (data) { + if (!main.replayChecking && !core.isReplaying()) + core.playStereo(data.name, data.left, data.right, data.split); + core.doAction(); + }); + core.registerEvent("moveStereo", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + const id = core.playStereo( + data.name, + data.left, + data.right, + data.split + ); + core.moveStereo(id, data.leftTo, data.rightTo, data.time); + } + core.doAction(); + }); + core.registerEvent("over", function (data) { + let image = data.image ?? ""; + let time = data.time ?? 3000; + let sound = data.sound ?? ""; + let textColor = data.textColor ?? "#FFFFFF"; + let boldColor = data.boldColor ?? "#000000"; + let font = data.font ?? "bold 48px Verdana"; + let text = data.text ?? ""; + let hidetime = data.hidetime ?? 100; + if (!main.replayChecking && !core.isReplaying()) { + core.over( + image, + data.memory, + time, + hidetime, + sound, + textColor, + boldColor, + font, + text + ); + } else { + core.doAction(); + } + }); + core.registerEvent("changebg", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.changebg( + data.img1, + data.memory1, + data.img2, + data.memory2, + data.time, + data.style + ); + } else { + core.doAction(); + } + }); + core.registerEvent("overlist", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.overlist( + data.image, + data.memory, + data.hidetime || 30, + data.list || [ + { + text: "", + sound: "", + time: 50, + textColor: "#FFFFFF", + boldColor: "#000000", + font: "bold 48px Verdana", + frame: 0, + }, + ] + ); + } else { + core.doAction(); + } + }); + core.registerEvent("op", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.openvideo(); + } else { + core.doAction(); + } + }); + core.registerEvent("animationDrawable", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.animationDrawable( + data.allFarme, + data.color, + data.globalAlpha, + data.imageList, + data.soundList + ); + } else { + core.doAction(); + } + }); + core.registerEvent("setanimate", function (data) { + data.px = data.px ?? 0; + data.py = data.py ?? 0; + core.setanimate( + data.name, + data.px, + data.py, + data.width, + data.height, + data.allFarme, + data.imageList, + data.soundList + ); + core.doAction(); + }); + core.registerEvent("clearanimate", function (data) { + core.plugin.playing.clear(); - data.px = data.px ?? 0; - data.py = data.py ?? 0; - core.setanimate(data.name, data.px, data.py, data.width, data.height, data.allFarme, data.imageList, data.soundList) - core.doAction(); - - - }); - core.registerEvent("clearanimate", function (data) { - core.plugin.playing.clear() - - core.doAction(); - - - }); - core.registerEvent("deleteanimate", function (data) { - core.deleteanimate(data.name) - core.doAction(); - }); - core.registerEvent("playanimate", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - data.x = data.x ?? 0 - data.y = data.y ?? 0 - data.scalex = data.scalex ?? 1 - data.scaley = data.scaley ?? 1 - core.playanimate(data.name, data.x, data.y, data.hero, data.scalex, data.scaley) - core.doAction(); - } else { - core.doAction(); - } - }); - core.registerEvent("setcgs", function (data) { - core.setcgs(data.img) - core.doAction() - }) - core.registerEvent("setq", function (data) { - core.setq(data.id) - core.doAction() - }) - core.registerEvent("cgtext", function (data) { - if (!main.replayChecking && !core.isReplaying()) { - core.ui.cgText.image = data.bg; - core.ui.cgText.memory = data.memory; - core.ui.cgText.head = core.clone(data.head); - core.ui.cgText.name = data.name; - core.ui.cgText.text = data.text; - core.ui.cgText.time = data.time; - core.ui.cgText.wait = data.wait; - core.ui.cgText.WindowSkin = data.WindowSkin; - core.ui.cgText.sound = data.sound || ""; - core.ui.cgText.bodyList = core.clone(data.bodyList); - main.dom.cgText.style.display = "block"; - core.ui.cgText.update(); - } else { - core.doAction(); - } - }); - }; -}, - "drawLight": function () { + core.doAction(); + }); + core.registerEvent("deleteanimate", function (data) { + core.deleteanimate(data.name); + core.doAction(); + }); + core.registerEvent("playanimate", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + data.x = data.x ?? 0; + data.y = data.y ?? 0; + data.scalex = data.scalex ?? 1; + data.scaley = data.scaley ?? 1; + core.playanimate( + data.name, + data.x, + data.y, + data.hero, + data.scalex, + data.scaley + ); + core.doAction(); + } else { + core.doAction(); + } + }); + core.registerEvent("cgtext", function (data) { + if (!main.replayChecking && !core.isReplaying()) { + core.ui.cgText.image = data.bg; + core.ui.cgText.memory = data.memory; + core.ui.cgText.head = core.clone(data.head); + core.ui.cgText.name = data.name; + core.ui.cgText.text = data.text; + core.ui.cgText.time = data.time; + core.ui.cgText.wait = data.wait; + core.ui.cgText.WindowSkin = data.WindowSkin; + core.ui.cgText.sound = data.sound || ""; + core.ui.cgText.bodyList = core.clone(data.bodyList); + main.dom.cgText.style.display = "block"; + core.ui.cgText.update(); + } else { + core.doAction(); + } + }); + }; + }, + drawLight: function () { // 绘制灯光/漆黑层效果。调用方式 core.plugin.drawLight(...) // 【参数说明】 // name:必填,要绘制到的画布名;可以是一个系统画布,或者是个自定义画布;如果不存在则创建 @@ -282,7 +286,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = // 可以在任何地方(如afterXXX或自定义脚本事件)调用函数,方法为 core.plugin.xxx(); }; }, - "shop": function () { + shop: function () { // 【全局商店】相关的功能 // // 打开一个全局商店 @@ -558,7 +562,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = 60 ); }, - "removeMap": function () { + removeMap: function () { // 高层塔砍层插件,删除后不会存入存档,不可浏览地图也不可飞到。 // 推荐用法: // 对于超高层或分区域塔,当在1区时将2区以后的地图删除;1区结束时恢复2区,进二区时删除1区地图,以此类推 @@ -647,7 +651,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = }); }; }, - "fiveLayers": function () { + fiveLayers: function () { // 是否启用五图层(增加背景2层和前景2层) 将__enable置为true即会启用;启用后请保存后刷新编辑器 // 背景层2将会覆盖背景层 被事件层覆盖 前景层2将会覆盖前景层 // 另外 请注意加入两个新图层 会让大地图的性能降低一些 @@ -849,7 +853,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = }; }; }, - "itemShop": function () { + itemShop: function () { // 道具商店相关的插件 // 可在全塔属性-全局商店中使用「道具商店」事件块进行编辑(如果找不到可以在入口方块中找) @@ -1251,7 +1255,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = ]); }; }, - "enemyLevel": function () { + enemyLevel: function () { // 此插件将提供怪物手册中的怪物境界显示 // 使用此插件需要先给每个怪物定义境界,方法如下: // 点击怪物的【配置表格】,找到“【怪物】相关的表格配置”,然后在【名称】仿照增加境界定义: @@ -1419,7 +1423,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = ); }; }, - "multiHeros": function () { + multiHeros: function () { // 多角色插件 // Step 1: 启用本插件 // Step 2: 定义每个新的角色各项初始数据(参见下方注释) @@ -1573,7 +1577,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = core.setFlag("heroId", toHeroId); // 保存切换到的角色ID }; }, - "heroFourFrames": function () { + heroFourFrames: function () { // 样板的勇士/跟随者移动时只使用2、4两帧,观感较差。本插件可以将四帧全用上。 // 是否启用本插件 @@ -1636,7 +1640,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = return false; }; }, - "routeFixing": function () { + routeFixing: function () { // 是否开启本插件,true 表示启用,false 表示禁用。 var __enable = true; if (!__enable) return; @@ -1760,7 +1764,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = 100 ); }, - "numpad": function () { + numpad: function () { // 样板自带的整数输入事件为白屏弹窗且可以误输入任意非法内容但不支持负整数,观感较差。本插件可以将其美化成仿RM样式,使其支持负整数同时带有音效 // 另一方面,4399等第三方平台不允许使用包括 core.myprompt() 和 core.myconfirm() 在内的弹窗,因此也需要此插件来替代,不然类似生命魔杖的道具就不好实现了 // 关于负整数输入,V2.8.2原生支持其录像的压缩和解压,只是默认的 core.events._action_input() 函数将负数取了绝对值,可以只复写下面的 core.isReplaying() 部分来取消 @@ -2017,7 +2021,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } }; }, - "sprites": function () { + sprites: function () { // 基于canvas的sprite化,摘编整理自万宁魔塔 // // ---------------------------------------- 第一部分 js代码 (必装) --------------------------------------- // @@ -2221,7 +2225,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = window.Sprite = Sprite; }, - "hotReload": function () { + hotReload: function () { /* ---------- 功能说明 ---------- * 1. 当 libs/ main.js index.html 中的任意一个文件被更改后,会自动刷新塔的页面 @@ -2478,1210 +2482,1212 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } })(); }, - "statusBar": function () { - main.dom.floorMsgGroup.style.display = "none"; - main.dom.statusBar.style.display = "none"; - main.dom.toolBar.style.display = "none"; - //所有数据*3是为了实现高清画布 - const GAMEVIEW_WIDTH = 676 * 3; //横屏画面宽度 - const GAMEVIEW_HEIGHT = 416 * 3; //横屏画面高度 + statusBar: function () { + main.dom.floorMsgGroup.style.display = "none"; + main.dom.statusBar.style.display = "none"; + main.dom.toolBar.style.display = "none"; + //所有数据*3是为了实现高清画布 + const GAMEVIEW_WIDTH = 676 * 3; //横屏画面宽度 + const GAMEVIEW_HEIGHT = 416 * 3; //横屏画面高度 - const GAMEVIEW_WIDTH_VERTICAL = 416 * 3; //竖屏画面宽度 - const GAMEVIEW_HEIGHT_VERTICAL = 676 * 3; //竖屏画面高度 + const GAMEVIEW_WIDTH_VERTICAL = 416 * 3; //竖屏画面宽度 + const GAMEVIEW_HEIGHT_VERTICAL = 676 * 3; //竖屏画面高度 - const BAR_WIDTH = 130 * 3; //横屏左侧额外距离(即边栏宽度) - const BAR_HEIGHT_VERTICAL = 130 * 3; //竖屏上侧额外距离(即边栏高度) - const BORDER_WIDTH = 0; //游戏画面左侧偏移距离 - const BORDER_HEIGHT = 0; //游戏画面上侧偏移距离 + const BAR_WIDTH = 130 * 3; //横屏左侧额外距离(即边栏宽度) + const BAR_HEIGHT_VERTICAL = 130 * 3; //竖屏上侧额外距离(即边栏高度) + const BORDER_WIDTH = 0; //游戏画面左侧偏移距离 + const BORDER_HEIGHT = 0; //游戏画面上侧偏移距离 - const ITEM_BOX_LEFT = 549 * 3; //横屏道具栏左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) - const ITEM_BOX_TOP = 155 * 3; //横屏道具栏上侧距离 - const ITEM_BOX_LEFT_VERTICAL = 160 * 3; //竖屏道具栏左侧距离 - const ITEM_BOX_TOP_VERTICAL = 549 * 3; //竖屏道具栏上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) + const ITEM_BOX_LEFT = 549 * 3; //横屏道具栏左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) + const ITEM_BOX_TOP = 155 * 3; //横屏道具栏上侧距离 + const ITEM_BOX_LEFT_VERTICAL = 160 * 3; //竖屏道具栏左侧距离 + const ITEM_BOX_TOP_VERTICAL = 549 * 3; //竖屏道具栏上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) - const EQUIP_BLOCK_LEFT = 549 * 3; //横屏装备栏左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) - const EQUIP_BLOCK_TOP = 10 * 3; //横屏装备栏上侧距离 - const EQUIP_BLOCK_LEFT_VERTICAL = 10 * 3; //竖屏装备栏左侧距离 - const EQUIP_BLOCK_TOP_VERTICAL = 549 * 3; //竖屏装备栏上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) + const EQUIP_BLOCK_LEFT = 549 * 3; //横屏装备栏左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) + const EQUIP_BLOCK_TOP = 10 * 3; //横屏装备栏上侧距离 + const EQUIP_BLOCK_LEFT_VERTICAL = 10 * 3; //竖屏装备栏左侧距离 + const EQUIP_BLOCK_TOP_VERTICAL = 549 * 3; //竖屏装备栏上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) - const MAP_BLOCK_LEFT = 551 * 3; //横屏小地图左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) - const MAP_BLOCK_TOP = 0; //横屏小地图上侧距离 - const MAP_BLOCK_LEFT_VERTICAL = 0; //竖屏小地图左侧距离 - const MAP_BLOCK_TOP_VERTICAL = 551 * 3; //竖屏小地图上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) + const MAP_BLOCK_LEFT = 551 * 3; //横屏小地图左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) + const MAP_BLOCK_TOP = 0; //横屏小地图上侧距离 + const MAP_BLOCK_LEFT_VERTICAL = 0; //竖屏小地图左侧距离 + const MAP_BLOCK_TOP_VERTICAL = 551 * 3; //竖屏小地图上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) - const KEY_BLOCK_LEFT = EQUIP_BLOCK_LEFT; //横屏钥匙栏左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) - const KEY_BLOCK_TOP = 110 * 3; //横屏钥匙栏上侧距离 - const KEY_BLOCK_LEFT_VERTICAL = 110 * 3; //竖屏钥匙栏左侧距离 - const KEY_BLOCK_TOP_VERTICAL = EQUIP_BLOCK_TOP_VERTICAL; //竖屏钥匙栏上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) + const KEY_BLOCK_LEFT = EQUIP_BLOCK_LEFT; //横屏钥匙栏左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) + const KEY_BLOCK_TOP = 110 * 3; //横屏钥匙栏上侧距离 + const KEY_BLOCK_LEFT_VERTICAL = 110 * 3; //竖屏钥匙栏左侧距离 + const KEY_BLOCK_TOP_VERTICAL = EQUIP_BLOCK_TOP_VERTICAL; //竖屏钥匙栏上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) - const INFO_BLOCK_LEFT = 10 * 3; //横屏道具说明左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) - const INFO_BLOCK_TOP = 180 * 3; //横屏道具说明上侧距离 - const INFO_BLOCK_LEFT_VERTICAL = 113 * 3; //竖屏道具说明左侧距离 - const INFO_BLOCK_TOP_VERTICAL = 8 * 3; //竖屏道具说明上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) + const INFO_BLOCK_LEFT = 10 * 3; //横屏道具说明左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) + const INFO_BLOCK_TOP = 180 * 3; //横屏道具说明上侧距离 + const INFO_BLOCK_LEFT_VERTICAL = 113 * 3; //竖屏道具说明左侧距离 + const INFO_BLOCK_TOP_VERTICAL = 8 * 3; //竖屏道具说明上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) - const TOOL_BOX_LEFT = EQUIP_BLOCK_LEFT; //横屏工具栏左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) - const TOOL_BOX_TOP = 348 * 3; //横屏工具栏上侧距离 - const TOOL_BOX_LEFT_VERTICAL = 348 * 3; //竖屏工具栏左侧距离 - const TOOL_BOX_TOP_VERTICAL = 549 * 3; //竖屏工具栏上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) + const TOOL_BOX_LEFT = EQUIP_BLOCK_LEFT; //横屏工具栏左侧距离(右侧边栏需增加BAR_WIDTH+GAMEVIEW_HEIGHT) + const TOOL_BOX_TOP = 348 * 3; //横屏工具栏上侧距离 + const TOOL_BOX_LEFT_VERTICAL = 348 * 3; //竖屏工具栏左侧距离 + const TOOL_BOX_TOP_VERTICAL = 549 * 3; //竖屏工具栏上侧距离(下侧边栏需增加BAR_HEIGHT_VERTICAL+GAMEVIEW_WIDTH_VERTICAL) - const TOOL_ICON_OUTER_SIZE = 34 * 3; + const TOOL_ICON_OUTER_SIZE = 34 * 3; - const TEXT_COLOR = "#FFFFFF"; //默认文字颜色 - const globalAlpha = 0.7; //默认底框透明度 - const FORCE_COUNTABLE_ITEMS = ["centerFly"]; //常态显示数量的非永久道具,如果道具不在此数组中,则只有道具多余1时显示数量 + const TEXT_COLOR = "#FFFFFF"; //默认文字颜色 + const globalAlpha = 0.7; //默认底框透明度 + const FORCE_COUNTABLE_ITEMS = ["centerFly"]; //常态显示数量的非永久道具,如果道具不在此数组中,则只有道具多余1时显示数量 - const outerBackground = document.createElement("canvas"); //背景画布设置 - let globalAlphafloor = 0, - globalAlphafloorStatus = 4; - outerBackground.style.position = "absolute"; - outerBackground.style.zIndex = 5; - outerBackground.id = "outerBackground"; - main.dom.outerBackground = outerBackground; - main.dom.startPanel.insertAdjacentElement("afterend", outerBackground); + const outerBackground = document.createElement("canvas"); //背景画布设置 + let globalAlphafloor = 0, + globalAlphafloorStatus = 4; + outerBackground.style.position = "absolute"; + outerBackground.style.zIndex = 5; + outerBackground.id = "outerBackground"; + main.dom.outerBackground = outerBackground; + main.dom.startPanel.insertAdjacentElement("afterend", outerBackground); - const outerUI = document.createElement("canvas"); //额外ui画布设置(状态栏所有绘制、点击都在额外ui上) - outerUI.style.position = "absolute"; - outerUI.style.zIndex = 165; - outerUI.id = "outerUI"; + const outerUI = document.createElement("canvas"); //额外ui画布设置(状态栏所有绘制、点击都在额外ui上) + outerUI.style.position = "absolute"; + outerUI.style.zIndex = 165; + outerUI.id = "outerUI"; - main.dom.outerUI = outerUI; - outerBackground.insertAdjacentElement("afterend", outerUI); - setTimeout(function () { - // Should be executed immediately after init() - main.canvas.outerUI = outerUI.getContext("2d"); - }); - outerUI.onclick = function (e) { - try { - e.preventDefault(); - if (!core.isPlaying()) return false; - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor((e.clientX - left) / core.domStyle.scale), - py = Math.floor((e.clientY - top) / core.domStyle.scale); - core.ui.statusBar.onclick(px * 3, py * 3); - } catch (ee) { - main.log(ee); - } - }; + main.dom.outerUI = outerUI; + outerBackground.insertAdjacentElement("afterend", outerUI); + setTimeout(function () { + // Should be executed immediately after init() + main.canvas.outerUI = outerUI.getContext("2d"); + }); + outerUI.onclick = function (e) { + try { + e.preventDefault(); + if (!core.isPlaying()) return false; + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor((e.clientX - left) / core.domStyle.scale), + py = Math.floor((e.clientY - top) / core.domStyle.scale); + core.ui.statusBar.onclick(px * 3, py * 3); + } catch (ee) { + main.log(ee); + } + }; - const _resize_gameGroup = function (obj) { - //游戏画面自适应调节 - const gameGroup = core.dom.gameGroup; - gameGroup.style.width = obj.totalWidth + "px"; - gameGroup.style.height = obj.totalHeight + "px"; - gameGroup.style.left = (obj.clientWidth - obj.totalWidth) / 2 + "px"; - gameGroup.style.top = (obj.clientHeight - obj.totalHeight) / 2 + "px"; - //floorMsgGroup为切换楼层中生效,显示时间可通过‘全塔属性’——‘切换楼层时间’或游戏内设置调整 - //显示内容为游戏名/版本号/楼层名 - // floorMsgGroup - var floorMsgGroup = core.dom.floorMsgGroup; - var globalAttribute = - core.status.globalAttribute || core.initStatus.globalAttribute; - floorMsgGroup.style = globalAttribute.floorChangingStyle; - floorMsgGroup.style.height = floorMsgGroup.style.width = - (GAMEVIEW_HEIGHT / 3) * core.domStyle.scale + "px"; - floorMsgGroup.style.fontSize = 16 * core.domStyle.scale + "px"; + const _resize_gameGroup = function (obj) { + //游戏画面自适应调节 + const gameGroup = core.dom.gameGroup; + gameGroup.style.width = obj.totalWidth + "px"; + gameGroup.style.height = obj.totalHeight + "px"; + gameGroup.style.left = (obj.clientWidth - obj.totalWidth) / 2 + "px"; + gameGroup.style.top = (obj.clientHeight - obj.totalHeight) / 2 + "px"; + //floorMsgGroup为切换楼层中生效,显示时间可通过‘全塔属性’——‘切换楼层时间’或游戏内设置调整 + //显示内容为游戏名/版本号/楼层名 + // floorMsgGroup + var floorMsgGroup = core.dom.floorMsgGroup; + var globalAttribute = + core.status.globalAttribute || core.initStatus.globalAttribute; + floorMsgGroup.style = globalAttribute.floorChangingStyle; + floorMsgGroup.style.height = floorMsgGroup.style.width = + (GAMEVIEW_HEIGHT / 3) * core.domStyle.scale + "px"; + floorMsgGroup.style.fontSize = 16 * core.domStyle.scale + "px"; - if (core.domStyle.isVertical) { - floorMsgGroup.style.left = "0px"; - floorMsgGroup.style.top = - ((GAMEVIEW_HEIGHT_VERTICAL / 3 - GAMEVIEW_WIDTH_VERTICAL / 3) * - core.domStyle.scale) / - 2 + - "px"; - } else { - floorMsgGroup.style.left = - ((GAMEVIEW_WIDTH / 3 - GAMEVIEW_HEIGHT / 3) * core.domStyle.scale) / - 2 + - "px"; - floorMsgGroup.style.top = "0px"; - } - core.dom.musicBtn.style.right = - (obj.clientWidth - obj.totalWidth) / 2 + "px"; - core.dom.musicBtn.style.bottom = - (obj.clientHeight - obj.totalHeight) / 2 - 27 + "px"; - if (!core.isPlaying()) { - const end = core.getLocalStorage('end') - let startBackground = core.domStyle.isVertical ? - end ? 'project/images/winbackgroundVertical.webp' : main.styles.startVerticalBackground || main.styles.startBackground : - end ? 'project/images/winbackground.webp' : main.styles.startBackground; - main.dom.startBackground.src = startBackground; - } - const span = document - .getElementById("startButtons") - .getElementsByTagName("span"); - let font = (GAMEVIEW_WIDTH / 100) * core.domStyle.scale; - if (core.domStyle.isVertical) - font = ((GAMEVIEW_WIDTH_VERTICAL * 2) / 100) * core.domStyle.scale; + if (core.domStyle.isVertical) { + floorMsgGroup.style.left = "0px"; + floorMsgGroup.style.top = + ((GAMEVIEW_HEIGHT_VERTICAL / 3 - GAMEVIEW_WIDTH_VERTICAL / 3) * + core.domStyle.scale) / + 2 + + "px"; + } else { + floorMsgGroup.style.left = + ((GAMEVIEW_WIDTH / 3 - GAMEVIEW_HEIGHT / 3) * core.domStyle.scale) / + 2 + + "px"; + floorMsgGroup.style.top = "0px"; + } + core.dom.musicBtn.style.right = + (obj.clientWidth - obj.totalWidth) / 2 + "px"; + core.dom.musicBtn.style.bottom = + (obj.clientHeight - obj.totalHeight) / 2 - 27 + "px"; + let startBackground = core.domStyle.isVertical + ? main.styles.startVerticalBackground || main.styles.startBackground + : main.styles.startBackground; + if (main.dom.startBackground.getAttribute("__src__") != startBackground) { + main.dom.startBackground.setAttribute("__src__", startBackground); + main.dom.startBackground.src = startBackground; + } + const span = document + .getElementById("startButtons") + .getElementsByTagName("span"); + let font = (GAMEVIEW_WIDTH / 100) * core.domStyle.scale; + if (core.domStyle.isVertical) + font = ((GAMEVIEW_WIDTH_VERTICAL * 2) / 100) * core.domStyle.scale; - core.dom.playGame.style.fontSize = font + "px"; - core.dom.loadGame.style.fontSize = font + "px"; - core.dom.CGMode.style.fontSize = font + "px"; - core.dom.musicMode.style.fontSize = font + "px"; - core.dom.replayGame.style.fontSize = font + "px"; - core.dom.startButtonGroup.style.padding = font * 0.3 + "px 25px"; - }; - const _resize_canvas = function (obj) { - //自适应画布 - main.dom.outerBackground.style.width = obj.totalWidth + "px"; - main.dom.outerBackground.style.height = obj.totalHeight + "px"; - main.dom.outerUI.style.width = obj.totalWidth + "px"; - main.dom.outerUI.style.height = obj.totalHeight + "px"; - if (main.dom.CGUI) { - main.dom.CGUI.style.width = obj.totalWidth + 3 + "px"; - main.dom.CGUI.style.height = obj.totalHeight + 3 + "px"; - } - if (main.dom.music) { - main.dom.music.style.width = obj.totalWidth + 3 + "px"; - main.dom.music.style.height = obj.totalHeight + 3 + "px"; - } - if (main.dom.cgText) { - main.dom.cgText.style.width = obj.totalWidth + 3 + "px"; - main.dom.cgText.style.height = obj.totalHeight + 3 + "px"; - } - if (main.dom.over) { - main.dom.over.style.width = obj.totalWidth + 3 + "px"; - main.dom.over.style.height = obj.totalHeight + 3 + "px"; - } - if (main.dom.video) { - main.dom.video.style.width = obj.totalWidth + 3 + "px"; - main.dom.video.style.height = obj.totalHeight + 3 + "px"; - if (core.domStyle.isVertical) - main.dom.video.style.width = obj.totalHeight + 3 + "px"; - if (core.domStyle.isVertical) - main.dom.video.style.height = obj.totalWidth + 3 + "px"; - main.dom.video.style.top = "50%"; - main.dom.video.style.left = "50%"; + core.dom.playGame.style.fontSize = font + "px"; + core.dom.loadGame.style.fontSize = font + "px"; + core.dom.CGMode.style.fontSize = font + "px"; + core.dom.musicMode.style.fontSize = font + "px"; + core.dom.replayGame.style.fontSize = font + "px"; + core.dom.startButtonGroup.style.padding = font * 0.3 + "px 25px"; + }; + const _resize_canvas = function (obj) { + //自适应画布 + main.dom.outerBackground.style.width = obj.totalWidth + "px"; + main.dom.outerBackground.style.height = obj.totalHeight + "px"; + main.dom.outerUI.style.width = obj.totalWidth + "px"; + main.dom.outerUI.style.height = obj.totalHeight + "px"; + if (main.dom.CGUI) { + main.dom.CGUI.style.width = obj.totalWidth + 3 + "px"; + main.dom.CGUI.style.height = obj.totalHeight + 3 + "px"; + } + if (main.dom.music) { + main.dom.music.style.width = obj.totalWidth + 3 + "px"; + main.dom.music.style.height = obj.totalHeight + 3 + "px"; + } + if (main.dom.cgText) { + main.dom.cgText.style.width = obj.totalWidth + 3 + "px"; + main.dom.cgText.style.height = obj.totalHeight + 3 + "px"; + } + if (main.dom.over) { + main.dom.over.style.width = obj.totalWidth + 3 + "px"; + main.dom.over.style.height = obj.totalHeight + 3 + "px"; + } + if (main.dom.video) { + main.dom.video.style.width = obj.totalWidth + 3 + "px"; + main.dom.video.style.height = obj.totalHeight + 3 + "px"; + if (core.domStyle.isVertical) + main.dom.video.style.width = obj.totalHeight + 3 + "px"; + if (core.domStyle.isVertical) + main.dom.video.style.height = obj.totalWidth + 3 + "px"; + main.dom.video.style.top = "50%"; + main.dom.video.style.left = "50%"; - main.dom.video.style.transform = "translate(-50%,-50%)"; + main.dom.video.style.transform = "translate(-50%,-50%)"; - if (core.domStyle.isVertical) - main.dom.video.style.transform = "translate(-50%,-50%) rotate(90deg)"; - } - if (main.dom.video1) { - main.dom.video1.style.width = obj.totalWidth + 3 + "px"; - main.dom.video1.style.height = obj.totalHeight + 3 + "px"; - } + if (core.domStyle.isVertical) + main.dom.video.style.transform = "translate(-50%,-50%) rotate(90deg)"; + } + if (main.dom.video1) { + main.dom.video1.style.width = obj.totalWidth + 3 + "px"; + main.dom.video1.style.height = obj.totalHeight + 3 + "px"; + } - const innerSize = obj.canvasWidth * core.domStyle.scale + "px"; - for (let i = 0; i < core.dom.gameCanvas.length; ++i) - core.dom.gameCanvas[i].style.width = core.dom.gameCanvas[ - i - ].style.height = innerSize; - core.dom.gif.style.width = core.dom.gif.style.height = innerSize; - core.dom.gif2.style.width = core.dom.gif2.style.height = innerSize; + const innerSize = obj.canvasWidth * core.domStyle.scale + "px"; + for (let i = 0; i < core.dom.gameCanvas.length; ++i) + core.dom.gameCanvas[i].style.width = core.dom.gameCanvas[ + i + ].style.height = innerSize; + core.dom.gif.style.width = core.dom.gif.style.height = innerSize; + core.dom.gif2.style.width = core.dom.gif2.style.height = innerSize; - core.dom.gameDraw.style.width = core.dom.gameDraw.style.height = - innerSize; - core.dom.gameDraw.style.top = - obj.gameDrawBox.top * core.domStyle.scale + "px"; - core.dom.gameDraw.style.left = - obj.gameDrawBox.left * core.domStyle.scale + "px"; - // resize bigmap - core.bigmap.canvas.forEach(function (cn) { - const ratio = core.canvas[cn].canvas.hasAttribute("isHD") ? - core.domStyle.ratio : - 1; - core.canvas[cn].canvas.style.width = - (innerSize / ratio) * core.domStyle.scale + "px"; - core.canvas[cn].canvas.style.height = - (innerSize / ratio) * core.domStyle.scale + "px"; - }); - // resize dynamic canvas - for (const name in core.dymCanvas) { - const ctx = core.dymCanvas[name], - canvas = ctx.canvas; - const ratio = canvas.hasAttribute("isHD") ? core.domStyle.ratio : 1; - canvas.style.width = (innerSize / ratio) * core.domStyle.scale + "px"; - canvas.style.height = (innerSize / ratio) * core.domStyle.scale + "px"; - canvas.style.left = - parseFloat(canvas.getAttribute("_left")) * core.domStyle.scale + "px"; - canvas.style.top = - parseFloat(canvas.getAttribute("_top")) * core.domStyle.scale + "px"; - } - // resize next - main.dom.next.style.width = main.dom.next.style.height = - 5 * core.domStyle.scale + "px"; - main.dom.next.style.borderBottomWidth = - main.dom.next.style.borderRightWidth = 4 * core.domStyle.scale + "px"; - }; - const bgctx = main.dom.outerBackground.getContext("2d"); - const uictx = main.dom.outerUI.getContext("2d"); - let now = 0; - core.registerAnimationFrame("lightFloor", true, function (timestamp) { - if (timestamp - now > 1000 / 60) { - now = timestamp; - globalAlphafloor += globalAlphafloorStatus; - if (globalAlphafloor === 100) globalAlphafloorStatus = -2; - if (globalAlphafloor === 0) globalAlphafloorStatus = 2; + core.dom.gameDraw.style.width = core.dom.gameDraw.style.height = + innerSize; + core.dom.gameDraw.style.top = + obj.gameDrawBox.top * core.domStyle.scale + "px"; + core.dom.gameDraw.style.left = + obj.gameDrawBox.left * core.domStyle.scale + "px"; + // resize bigmap + core.bigmap.canvas.forEach(function (cn) { + const ratio = core.canvas[cn].canvas.hasAttribute("isHD") + ? core.domStyle.ratio + : 1; + core.canvas[cn].canvas.style.width = + (innerSize / ratio) * core.domStyle.scale + "px"; + core.canvas[cn].canvas.style.height = + (innerSize / ratio) * core.domStyle.scale + "px"; + }); + // resize dynamic canvas + for (const name in core.dymCanvas) { + const ctx = core.dymCanvas[name], + canvas = ctx.canvas; + const ratio = canvas.hasAttribute("isHD") ? core.domStyle.ratio : 1; + canvas.style.width = (innerSize / ratio) * core.domStyle.scale + "px"; + canvas.style.height = (innerSize / ratio) * core.domStyle.scale + "px"; + canvas.style.left = + parseFloat(canvas.getAttribute("_left")) * core.domStyle.scale + "px"; + canvas.style.top = + parseFloat(canvas.getAttribute("_top")) * core.domStyle.scale + "px"; + } + // resize next + main.dom.next.style.width = main.dom.next.style.height = + 5 * core.domStyle.scale + "px"; + main.dom.next.style.borderBottomWidth = + main.dom.next.style.borderRightWidth = 4 * core.domStyle.scale + "px"; + }; + const bgctx = main.dom.outerBackground.getContext("2d"); + const uictx = main.dom.outerUI.getContext("2d"); + let now = 0; + core.registerAnimationFrame("lightFloor", true, function (timestamp) { + if (timestamp - now > 1000 / 60) { + now = timestamp; + globalAlphafloor += globalAlphafloorStatus; + if (globalAlphafloor === 100) globalAlphafloorStatus = -2; + if (globalAlphafloor === 0) globalAlphafloorStatus = 2; - if (core.domStyle.isVertical) { - core.clearMap( - uictx, - MAP_BLOCK_LEFT_VERTICAL, - MAP_BLOCK_TOP_VERTICAL, - 340, - 360 - ); - if (core.status.event.id === "viewMaps") { - core.ui.statusBar._update_map(core.status.event.data.floorId); - } else { - core.ui.statusBar._update_map(); - } + if (core.domStyle.isVertical) { + core.clearMap( + uictx, + MAP_BLOCK_LEFT_VERTICAL, + MAP_BLOCK_TOP_VERTICAL, + 340, + 360 + ); + if (core.status.event.id === "viewMaps") { + core.ui.statusBar._update_map(core.status.event.data.floorId); + } else { + core.ui.statusBar._update_map(); + } - uictx.globalAlpha = globalAlphafloor / 100; - core.drawImage( - uictx, - "green.webp", - MAP_BLOCK_LEFT_VERTICAL + 135, - MAP_BLOCK_TOP_VERTICAL + 170 - ); - uictx.globalAlpha = 1; - } else { - core.clearMap(uictx, MAP_BLOCK_LEFT, MAP_BLOCK_TOP, 340, 360); - if (core.status.event.id === "viewMaps") { - core.ui.statusBar._update_map(core.status.event.data.floorId); - } else { - core.ui.statusBar._update_map(); - } - uictx.globalAlpha = globalAlphafloor / 100; - core.drawImage( - uictx, - "green.webp", - MAP_BLOCK_LEFT + 150, - MAP_BLOCK_TOP + 180 - ); - uictx.globalAlpha = 1; - } - } - }); + uictx.globalAlpha = globalAlphafloor / 100; + core.drawImage( + uictx, + "green.webp", + MAP_BLOCK_LEFT_VERTICAL + 135, + MAP_BLOCK_TOP_VERTICAL + 170 + ); + uictx.globalAlpha = 1; + } else { + core.clearMap(uictx, MAP_BLOCK_LEFT, MAP_BLOCK_TOP, 340, 360); + if (core.status.event.id === "viewMaps") { + core.ui.statusBar._update_map(core.status.event.data.floorId); + } else { + core.ui.statusBar._update_map(); + } + uictx.globalAlpha = globalAlphafloor / 100; + core.drawImage( + uictx, + "green.webp", + MAP_BLOCK_LEFT + 150, + MAP_BLOCK_TOP + 180 + ); + uictx.globalAlpha = 1; + } + } + }); - core.control.resize = function () { - //自适应,可实现横竖屏切换 - if (main.mode == "editor") return; + core.control.resize = function () { + //自适应,可实现横竖屏切换 + if (main.mode == "editor") return; - const clientWidth = main.dom.body.clientWidth, - clientHeight = main.dom.body.clientHeight; - const canvasWidth = core.__PIXELS__; + const clientWidth = main.dom.body.clientWidth, + clientHeight = main.dom.body.clientHeight; + const canvasWidth = core.__PIXELS__; - const isVertical = clientHeight > clientWidth; - core.domStyle.isVertical = isVertical; + const isVertical = clientHeight > clientWidth; + core.domStyle.isVertical = isVertical; - const totalWidth = isVertical ? - GAMEVIEW_WIDTH_VERTICAL / 3 : - GAMEVIEW_WIDTH / 3, - totalHeight = isVertical ? - GAMEVIEW_HEIGHT_VERTICAL / 3 : - GAMEVIEW_HEIGHT / 3; + const totalWidth = isVertical + ? GAMEVIEW_WIDTH_VERTICAL / 3 + : GAMEVIEW_WIDTH / 3, + totalHeight = isVertical + ? GAMEVIEW_HEIGHT_VERTICAL / 3 + : GAMEVIEW_HEIGHT / 3; - const maxRatio = Math.min( - clientWidth / totalWidth, - clientHeight / totalHeight - ); + const maxRatio = Math.min( + clientWidth / totalWidth, + clientHeight / totalHeight + ); - core.domStyle.availableScale = []; - [1, 1.25, 1.5, 1.75, 2].forEach(function (v) { - if (maxRatio >= v) { - core.domStyle.availableScale.push(v); - } - }); + core.domStyle.availableScale = []; + [1, 1.25, 1.5, 1.75, 2].forEach(function (v) { + if (maxRatio >= v) { + core.domStyle.availableScale.push(v); + } + }); - if (core.domStyle.availableScale.indexOf(core.domStyle.scale) < 0) { - core.domStyle.scale = Math.min(1, maxRatio); - } else if ( - core.getLocalStorage("scale") == null && - core.domStyle.availableScale.length >= 2 - ) { - core.domStyle.scale = - core.domStyle.availableScale[core.domStyle.availableScale.length - 2]; - core.setLocalStorage("scale", core.domStyle.scale); - } + if (core.domStyle.availableScale.indexOf(core.domStyle.scale) < 0) { + core.domStyle.scale = Math.min(1, maxRatio); + } else if ( + core.getLocalStorage("scale") == null && + core.domStyle.availableScale.length >= 2 + ) { + core.domStyle.scale = + core.domStyle.availableScale[core.domStyle.availableScale.length - 2]; + core.setLocalStorage("scale", core.domStyle.scale); + } - const totalWidthScaled = totalWidth * core.domStyle.scale, - totalHeightScaled = totalHeight * core.domStyle.scale; + const totalWidthScaled = totalWidth * core.domStyle.scale, + totalHeightScaled = totalHeight * core.domStyle.scale; - const gameDrawBox = isVertical ? { - left: BORDER_WIDTH / 3, - top: BAR_HEIGHT_VERTICAL / 3 + BORDER_HEIGHT / 3, - } : { left: BAR_WIDTH / 3 + BORDER_WIDTH / 3, top: BORDER_HEIGHT / 3 }; + const gameDrawBox = isVertical + ? { + left: BORDER_WIDTH / 3, + top: BAR_HEIGHT_VERTICAL / 3 + BORDER_HEIGHT / 3, + } + : { left: BAR_WIDTH / 3 + BORDER_WIDTH / 3, top: BORDER_HEIGHT / 3 }; - const obj = { - clientWidth: clientWidth, - clientHeight: clientHeight, - canvasWidth: canvasWidth, - totalWidth: totalWidthScaled, - totalHeight: totalHeightScaled, - gameDrawBox: gameDrawBox, - globalAttribute: core.status.globalAttribute || core.initStatus.globalAttribute, - }; + const obj = { + clientWidth: clientWidth, + clientHeight: clientHeight, + canvasWidth: canvasWidth, + totalWidth: totalWidthScaled, + totalHeight: totalHeightScaled, + gameDrawBox: gameDrawBox, + globalAttribute: + core.status.globalAttribute || core.initStatus.globalAttribute, + }; - _resize_gameGroup(obj); - _resize_canvas(obj); + _resize_gameGroup(obj); + _resize_canvas(obj); - if (core.status.automaticRoute == null) core.status.automaticRoute = {}; - core.updateStatusBar(); - if (main.dom.CGUI && main.dom.CGUI.style.display === "block") - core.ui.CG.update(); - if (main.dom.music && main.dom.music.style.display === "block") - core.ui.music.update(); - if (main.dom.cgText && main.dom.cgText.style.display === "block") - core.ui.cgText.update(); - }; + if (core.status.automaticRoute == null) core.status.automaticRoute = {}; + core.updateStatusBar(); + if (main.dom.CGUI && main.dom.CGUI.style.display === "block") + core.ui.CG.update(); + if (main.dom.music && main.dom.music.style.display === "block") + core.ui.music.update(); + if (main.dom.cgText && main.dom.cgText.style.display === "block") + core.ui.cgText.update(); + }; - class StatusBar { - constructor() { - //道具栏列表 - this.itemMx = [ - //空位用‘none’填充,当前ui至多4列6行 - ["book", "wand", "none", "fly"], - ["cross", "superPotion", "pickaxe"], - ["bomb", "centerFly", "upFly"], - ["none", "none", "none"], - ["downFly", "knife", "snow"], - ["bigKey", "earthquake", "coin"], - ]; - } - //初始化内容(工具栏/录像操作执行函数) - init() { - this.toolbarAction = [ - [ - main.core.openKeyBoard, - main.core.openQuickShop, - core.openToolbox, - core.doSL, - ], - [main.core.openSettings, main.core.save, main.core.load, core.doSL], - ]; - this.replayAction = [ - [core.triggerReplay, core.stopReplay, core.rewindReplay], - [core.speedDownReplay, core.speedUpReplay, core.saveReplay], - ]; - } - //更新 - update() { - this._update_background(); //更新背景 - this._update_props(); //更新属性 - //this._update_items(); //更新道具 - //this._update_equips(); //更新装备 - //this._update_keys(); //更新钥匙 - //this._update_infoWindow(); //更新道具说明 - this._update_toolBox(); //更新工具栏 - this._redrawMap(); - } - _redrawMap() { - if (core.domStyle.isVertical) { - core.clearMap( - uictx, - MAP_BLOCK_LEFT_VERTICAL, - MAP_BLOCK_TOP_VERTICAL, - 340, - 360 - ); - this._update_map(); - uictx.globalAlpha = globalAlphafloor / 100; - core.drawImage( - uictx, - "green.webp", - MAP_BLOCK_LEFT_VERTICAL + 125, - MAP_BLOCK_TOP_VERTICAL + 170 - ); - uictx.globalAlpha = 1; - } else { - core.clearMap(uictx, MAP_BLOCK_LEFT, MAP_BLOCK_TOP, 340, 360); - this._update_map(); - uictx.globalAlpha = globalAlphafloor / 100; - core.drawImage( - uictx, - "green.webp", - MAP_BLOCK_LEFT + 150, - MAP_BLOCK_TOP + 170 - ); - uictx.globalAlpha = 1; - } - } - //更新背景 - _update_background() { - if (core.domStyle.isVertical) { - bgctx.canvas.width = GAMEVIEW_WIDTH_VERTICAL; - bgctx.canvas.height = GAMEVIEW_HEIGHT_VERTICAL; - uictx.canvas.width = GAMEVIEW_WIDTH_VERTICAL; - uictx.canvas.height = GAMEVIEW_HEIGHT_VERTICAL; + class StatusBar { + constructor() { + //道具栏列表 + this.itemMx = [ + //空位用‘none’填充,当前ui至多4列6行 + ["book", "wand", "none", "fly"], + ["cross", "superPotion", "pickaxe"], + ["bomb", "centerFly", "upFly"], + ["none", "none", "none"], + ["downFly", "knife", "snow"], + ["bigKey", "earthquake", "coin"], + ]; + } + //初始化内容(工具栏/录像操作执行函数) + init() { + this.toolbarAction = [ + [ + main.core.openKeyBoard, + main.core.openQuickShop, + core.openToolbox, + core.doSL, + ], + [main.core.openSettings, main.core.save, main.core.load, core.doSL], + ]; + this.replayAction = [ + [core.triggerReplay, core.stopReplay, core.rewindReplay], + [core.speedDownReplay, core.speedUpReplay, core.saveReplay], + ]; + } + //更新 + update() { + this._update_background(); //更新背景 + this._update_props(); //更新属性 + //this._update_items(); //更新道具 + //this._update_equips(); //更新装备 + //this._update_keys(); //更新钥匙 + //this._update_infoWindow(); //更新道具说明 + this._update_toolBox(); //更新工具栏 + this._redrawMap(); + } + _redrawMap() { + if (core.domStyle.isVertical) { + core.clearMap( + uictx, + MAP_BLOCK_LEFT_VERTICAL, + MAP_BLOCK_TOP_VERTICAL, + 340, + 360 + ); + this._update_map(); + uictx.globalAlpha = globalAlphafloor / 100; + core.drawImage( + uictx, + "green.webp", + MAP_BLOCK_LEFT_VERTICAL + 125, + MAP_BLOCK_TOP_VERTICAL + 170 + ); + uictx.globalAlpha = 1; + } else { + core.clearMap(uictx, MAP_BLOCK_LEFT, MAP_BLOCK_TOP, 340, 360); + this._update_map(); + uictx.globalAlpha = globalAlphafloor / 100; + core.drawImage( + uictx, + "green.webp", + MAP_BLOCK_LEFT + 150, + MAP_BLOCK_TOP + 170 + ); + uictx.globalAlpha = 1; + } + } + //更新背景 + _update_background() { + if (core.domStyle.isVertical) { + bgctx.canvas.width = GAMEVIEW_WIDTH_VERTICAL; + bgctx.canvas.height = GAMEVIEW_HEIGHT_VERTICAL; + uictx.canvas.width = GAMEVIEW_WIDTH_VERTICAL; + uictx.canvas.height = GAMEVIEW_HEIGHT_VERTICAL; - const bg = core.material.images.images["status.webp"]; //竖屏背景(上) - bgctx.drawImage( - bg, - 0, - 0, - GAMEVIEW_WIDTH_VERTICAL, - BAR_HEIGHT_VERTICAL - ); - const bg2 = core.material.images.images["status.webp"]; //竖屏背景(下) - bgctx.drawImage( - bg2, - 0, - BAR_HEIGHT_VERTICAL + GAMEVIEW_WIDTH_VERTICAL, - GAMEVIEW_WIDTH_VERTICAL, - BAR_HEIGHT_VERTICAL - ); - bgctx.globalAlpha = globalAlpha; - bgctx.globalAlpha = 1; - core.setTextAlign("outerUI", "center"); - } else { - bgctx.canvas.width = GAMEVIEW_WIDTH; - bgctx.canvas.height = GAMEVIEW_HEIGHT; - uictx.canvas.width = GAMEVIEW_WIDTH; - uictx.canvas.height = GAMEVIEW_HEIGHT; + const bg = core.material.images.images["status.webp"]; //竖屏背景(上) + bgctx.drawImage( + bg, + 0, + 0, + GAMEVIEW_WIDTH_VERTICAL, + BAR_HEIGHT_VERTICAL + ); + const bg2 = core.material.images.images["status.webp"]; //竖屏背景(下) + bgctx.drawImage( + bg2, + 0, + BAR_HEIGHT_VERTICAL + GAMEVIEW_WIDTH_VERTICAL, + GAMEVIEW_WIDTH_VERTICAL, + BAR_HEIGHT_VERTICAL + ); + bgctx.globalAlpha = globalAlpha; + bgctx.globalAlpha = 1; + core.setTextAlign("outerUI", "center"); + } else { + bgctx.canvas.width = GAMEVIEW_WIDTH; + bgctx.canvas.height = GAMEVIEW_HEIGHT; + uictx.canvas.width = GAMEVIEW_WIDTH; + uictx.canvas.height = GAMEVIEW_HEIGHT; - const bg = core.material.images.images["status.webp"]; //横屏背景(左) - bgctx.drawImage(bg, 0, 0, BAR_WIDTH, GAMEVIEW_HEIGHT); - const bg2 = core.material.images.images["status.webp"]; //横屏背景(右) - bgctx.drawImage( - bg2, - BAR_WIDTH + GAMEVIEW_HEIGHT, - 0, - BAR_WIDTH, - GAMEVIEW_HEIGHT - ); - bgctx.globalAlpha = globalAlpha; + const bg = core.material.images.images["status.webp"]; //横屏背景(左) + bgctx.drawImage(bg, 0, 0, BAR_WIDTH, GAMEVIEW_HEIGHT); + const bg2 = core.material.images.images["status.webp"]; //横屏背景(右) + bgctx.drawImage( + bg2, + BAR_WIDTH + GAMEVIEW_HEIGHT, + 0, + BAR_WIDTH, + GAMEVIEW_HEIGHT + ); + bgctx.globalAlpha = globalAlpha; - bgctx.globalAlpha = 1; - core.setTextAlign("outerUI", "center"); - } - } - // 更新属性 - _update_props(updatedFloorTitle) { - if (!updatedFloorTitle && core.status.floorId) { - updatedFloorTitle = core.status.maps[core.status.floorId].title; - } - const statusList = ["hp", "atk", "def", "money"]; //属性列表,图标在函数复写core.statusBar.icons中声明,数字为project\materials\icons.png中的图标序号(可使用便捷ps追加,第一个序号为0) - const drawStatusList = (baseX, baseY) => { - let curh = baseY; - core.setTextAlign("outerUI", "right"); - statusList.forEach((item) => { - // 绘制图标 - core.drawIcon( - "outerUI", - item, - baseX - 95 * 3, - curh - 18 * 3, - 22 * 3, - 22 * 3 - ); + bgctx.globalAlpha = 1; + core.setTextAlign("outerUI", "center"); + } + } + // 更新属性 + _update_props(updatedFloorTitle) { + if (!updatedFloorTitle && core.status.floorId) { + updatedFloorTitle = core.status.maps[core.status.floorId].title; + } + const statusList = ["hp", "atk", "def", "money"]; //属性列表,图标在函数复写core.statusBar.icons中声明,数字为project\materials\icons.png中的图标序号(可使用便捷ps追加,第一个序号为0) + const drawStatusList = (baseX, baseY) => { + let curh = baseY; + core.setTextAlign("outerUI", "right"); + statusList.forEach((item) => { + // 绘制图标 + core.drawIcon( + "outerUI", + item, + baseX - 95 * 3, + curh - 18 * 3, + 22 * 3, + 22 * 3 + ); - // 四舍五入 - core.status.hero[item] = Math.round(core.status.hero[item]); - // 大数据格式化 - core.fillBoldText1( - "outerUI", - core.getRealStatus(item), - baseX, - curh, - TEXT_COLOR, - "#000000", - 6 - ); - curh += 24 * 3; - if (curh > 130 * 3 && core.domStyle.isVertical) { - curh = 24 * 3; - baseX += 105 * 3; - } - }); - core.setTextAlign("outerUI", "center"); - }; - if (core.domStyle.isVertical) { - core.clearMap("outerUI", 10 * 3, 0, 210 * 3, 120 * 3); - core.setFont("outerUI", "bold 42px Verdana"); - if (updatedFloorTitle) { - core.fillBoldText1( - "outerUI", - updatedFloorTitle, - 60 * 3, - 22 * 3, - TEXT_COLOR, - "#000000", - 6 - ); - } - //drawStatusList(96 * 3, 46 * 3); - //core.drawImage("outerUI", "lane1.png", 0, 0) - core.drawImage("outerUI", "cao.webp", 0, 0); - } else { - core.clearMap("outerUI", 10 * 3, 40 * 3, 105 * 3, 250 * 3); - core.setFont("outerUI", "bold 48px Verdana"); - if (updatedFloorTitle) { - core.fillBoldText1( - "outerUI", - updatedFloorTitle, - 62 * 3, - 41 * 3, - TEXT_COLOR, - "#000000", - 6 - ); - } - //drawStatusList(110 * 3, 93 * 3); - //core.drawImage("outerUI", "lane1.png", 0, 30) - core.drawImage( - "outerUI", - "cao.webp", - 0, - 0, - 400, - 350, - 0, - 30, - 360, - 315 - ); - } - } - _update_items() { - //更新道具栏 - const drawItemMx = (drawFn) => { - for (let i = 0; i < this.itemMx.length; i++) { - for (let j = 0; j < this.itemMx[i].length; j++) { - var item = this.itemMx[i][j]; - drawFn(i, j, item); - } - } - }; - const drawItem = (item, posx, posy) => { - const icon = core.material.icons.items[item], - image = core.material.images.items; - core.drawImage( - "outerUI", - image, - 0, - 32 * icon, - 32, - 32, - posx, - posy, - 30 * 3, - 30 * 3 - ); - const cnt = core.itemCount(item); - if ( - (core.items.items[item].cls === "tools" && cnt > 1) || - FORCE_COUNTABLE_ITEMS.includes(item) - ) { - core.fillText( - "outerUI", - cnt, - posx + 25 * 3, - posy + 28 * 3, - "#FFFFFF", - "bold 36px Verdana" - ); - } - }; - if (core.domStyle.isVertical) { - core.clearMap( - "outerUI", - ITEM_BOX_LEFT_VERTICAL, - ITEM_BOX_TOP_VERTICAL, - 185 * 3, - 125 * 3 - ); + // 四舍五入 + core.status.hero[item] = Math.round(core.status.hero[item]); + // 大数据格式化 + core.fillBoldText1( + "outerUI", + core.getRealStatus(item), + baseX, + curh, + TEXT_COLOR, + "#000000", + 6 + ); + curh += 24 * 3; + if (curh > 130 * 3 && core.domStyle.isVertical) { + curh = 24 * 3; + baseX += 105 * 3; + } + }); + core.setTextAlign("outerUI", "center"); + }; + if (core.domStyle.isVertical) { + core.clearMap("outerUI", 10 * 3, 0, 210 * 3, 120 * 3); + core.setFont("outerUI", "bold 42px Verdana"); + if (updatedFloorTitle) { + core.fillBoldText1( + "outerUI", + updatedFloorTitle, + 60 * 3, + 22 * 3, + TEXT_COLOR, + "#000000", + 6 + ); + } + //drawStatusList(96 * 3, 46 * 3); + //core.drawImage("outerUI", "lane1.png", 0, 0) + core.drawImage("outerUI", "cao.webp", 0, 0); + } else { + core.clearMap("outerUI", 10 * 3, 40 * 3, 105 * 3, 250 * 3); + core.setFont("outerUI", "bold 48px Verdana"); + if (updatedFloorTitle) { + core.fillBoldText1( + "outerUI", + updatedFloorTitle, + 62 * 3, + 41 * 3, + TEXT_COLOR, + "#000000", + 6 + ); + } + //drawStatusList(110 * 3, 93 * 3); + //core.drawImage("outerUI", "lane1.png", 0, 30) + core.drawImage( + "outerUI", + "cao.webp", + 0, + 0, + 400, + 350, + 0, + 30, + 360, + 315 + ); + } + } + _update_items() { + //更新道具栏 + const drawItemMx = (drawFn) => { + for (let i = 0; i < this.itemMx.length; i++) { + for (let j = 0; j < this.itemMx[i].length; j++) { + var item = this.itemMx[i][j]; + drawFn(i, j, item); + } + } + }; + const drawItem = (item, posx, posy) => { + const icon = core.material.icons.items[item], + image = core.material.images.items; + core.drawImage( + "outerUI", + image, + 0, + 32 * icon, + 32, + 32, + posx, + posy, + 30 * 3, + 30 * 3 + ); + const cnt = core.itemCount(item); + if ( + (core.items.items[item].cls === "tools" && cnt > 1) || + FORCE_COUNTABLE_ITEMS.includes(item) + ) { + core.fillText( + "outerUI", + cnt, + posx + 25 * 3, + posy + 28 * 3, + "#FFFFFF", + "bold 36px Verdana" + ); + } + }; + if (core.domStyle.isVertical) { + core.clearMap( + "outerUI", + ITEM_BOX_LEFT_VERTICAL, + ITEM_BOX_TOP_VERTICAL, + 185 * 3, + 125 * 3 + ); - drawItemMx((i, j, item) => { - if (core.hasItem(item)) { - const posx = ITEM_BOX_LEFT_VERTICAL + i * 30 * 3, - posy = ITEM_BOX_TOP_VERTICAL + j * 31 * 3; - drawItem(item, posx, posy); - } - }); - } else { - core.clearMap( - "outerUI", - ITEM_BOX_LEFT, - ITEM_BOX_TOP, - 125 * 3, - 185 * 3 - ); + drawItemMx((i, j, item) => { + if (core.hasItem(item)) { + const posx = ITEM_BOX_LEFT_VERTICAL + i * 30 * 3, + posy = ITEM_BOX_TOP_VERTICAL + j * 31 * 3; + drawItem(item, posx, posy); + } + }); + } else { + core.clearMap( + "outerUI", + ITEM_BOX_LEFT, + ITEM_BOX_TOP, + 125 * 3, + 185 * 3 + ); - drawItemMx((i, j, item) => { - if (core.hasItem(item)) { - const posx = ITEM_BOX_LEFT + j * 30 * 3, - posy = ITEM_BOX_TOP + i * 31 * 3; - drawItem(item, posx, posy); - } - }); - } - } + drawItemMx((i, j, item) => { + if (core.hasItem(item)) { + const posx = ITEM_BOX_LEFT + j * 30 * 3, + posy = ITEM_BOX_TOP + i * 31 * 3; + drawItem(item, posx, posy); + } + }); + } + } - _update_map(floorId = core.status.floorId) { - const x = core.domStyle.isVertical ? - MAP_BLOCK_LEFT_VERTICAL : - MAP_BLOCK_LEFT; - const y = core.domStyle.isVertical ? - MAP_BLOCK_TOP_VERTICAL : - MAP_BLOCK_TOP; + _update_map(floorId = core.status.floorId) { + const x = core.domStyle.isVertical + ? MAP_BLOCK_LEFT_VERTICAL + : MAP_BLOCK_LEFT; + const y = core.domStyle.isVertical + ? MAP_BLOCK_TOP_VERTICAL + : MAP_BLOCK_TOP; - if (!floorId) return; - const info = core.plugin.getMapDrawInfo(floorId, Infinity, true); - core.setTextAlign("outerUI", "center"); + if (!floorId) return; + const info = core.plugin.getMapDrawInfo(floorId, Infinity, true); + core.setTextAlign("outerUI", "center"); - core.plugin.drawSmallMap(uictx, info, floorId, x, y, 300, 300); - } + core.plugin.drawSmallMap(uictx, info, floorId, x, y, 300, 300); + } - _update_equips() { - return; - core.setFont("outerUI", "bold 48px Verdana"); - const drawEquip = (baseX, baseY, id, color, back) => { - if (!id) - core.fillText( - "outerUI", - back, - baseX + 20 * 3, - baseY + 22 * 3, - color - ); - else { - var icon = core.material.icons.items[id]; - core.drawImage( - "outerUI", - core.material.images.items, - 0, - 32 * icon, - 32, - 32, - baseX + 5 * 3, - baseY, - 32 * 3, - 32 * 3 - ); - } - }; - if (core.domStyle.isVertical) { - core.clearMap( - "outerUI", - EQUIP_BLOCK_LEFT_VERTICAL, - EQUIP_BLOCK_TOP_VERTICAL, - 90 * 3, - 130 * 3 - ); - drawEquip( - EQUIP_BLOCK_LEFT_VERTICAL, - EQUIP_BLOCK_TOP_VERTICAL, - core.getEquip(0), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT_VERTICAL + 45 * 3, - EQUIP_BLOCK_TOP_VERTICAL, - core.getEquip(1), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT_VERTICAL, - EQUIP_BLOCK_TOP_VERTICAL + 45 * 3, - core.getEquip(2), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT_VERTICAL + 45 * 3, - EQUIP_BLOCK_TOP_VERTICAL + 45 * 3, - core.getEquip(3), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT_VERTICAL, - EQUIP_BLOCK_TOP_VERTICAL + 90 * 3, - core.getEquip(4), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT_VERTICAL + 45 * 3, - EQUIP_BLOCK_TOP_VERTICAL + 90 * 3, - core.getEquip(5), - "#D1CEFF", - "无" - ); - } else { - core.clearMap( - "outerUI", - EQUIP_BLOCK_LEFT, - EQUIP_BLOCK_TOP, - 130 * 3, - 95 * 3 - ); - drawEquip( - EQUIP_BLOCK_LEFT, - EQUIP_BLOCK_TOP, - core.getEquip(0), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT + 42 * 3, - EQUIP_BLOCK_TOP, - core.getEquip(1), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT + 85 * 3, - EQUIP_BLOCK_TOP, - core.getEquip(2), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT, - EQUIP_BLOCK_TOP + 45 * 3, - core.getEquip(3), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT + 42 * 3, - EQUIP_BLOCK_TOP + 45 * 3, - core.getEquip(4), - "#D1CEFF", - "无" - ); - drawEquip( - EQUIP_BLOCK_LEFT + 85 * 3, - EQUIP_BLOCK_TOP + 45 * 3, - core.getEquip(5), - "#D1CEFF", - "无" - ); - } - } - _update_keys() { - const drawKeyList = (baseX, baseY) => { - const todraw = [], - keyList = ["yellowKey", "blueKey", "redKey", "greenKey"]; - let total = 0; - keyList.forEach(function (key, i) { - todraw[i] = core.itemCount(key); - total += todraw[i]; - }); + _update_equips() { + return; + core.setFont("outerUI", "bold 48px Verdana"); + const drawEquip = (baseX, baseY, id, color, back) => { + if (!id) + core.fillText( + "outerUI", + back, + baseX + 20 * 3, + baseY + 22 * 3, + color + ); + else { + var icon = core.material.icons.items[id]; + core.drawImage( + "outerUI", + core.material.images.items, + 0, + 32 * icon, + 32, + 32, + baseX + 5 * 3, + baseY, + 32 * 3, + 32 * 3 + ); + } + }; + if (core.domStyle.isVertical) { + core.clearMap( + "outerUI", + EQUIP_BLOCK_LEFT_VERTICAL, + EQUIP_BLOCK_TOP_VERTICAL, + 90 * 3, + 130 * 3 + ); + drawEquip( + EQUIP_BLOCK_LEFT_VERTICAL, + EQUIP_BLOCK_TOP_VERTICAL, + core.getEquip(0), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT_VERTICAL + 45 * 3, + EQUIP_BLOCK_TOP_VERTICAL, + core.getEquip(1), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT_VERTICAL, + EQUIP_BLOCK_TOP_VERTICAL + 45 * 3, + core.getEquip(2), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT_VERTICAL + 45 * 3, + EQUIP_BLOCK_TOP_VERTICAL + 45 * 3, + core.getEquip(3), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT_VERTICAL, + EQUIP_BLOCK_TOP_VERTICAL + 90 * 3, + core.getEquip(4), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT_VERTICAL + 45 * 3, + EQUIP_BLOCK_TOP_VERTICAL + 90 * 3, + core.getEquip(5), + "#D1CEFF", + "无" + ); + } else { + core.clearMap( + "outerUI", + EQUIP_BLOCK_LEFT, + EQUIP_BLOCK_TOP, + 130 * 3, + 95 * 3 + ); + drawEquip( + EQUIP_BLOCK_LEFT, + EQUIP_BLOCK_TOP, + core.getEquip(0), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT + 42 * 3, + EQUIP_BLOCK_TOP, + core.getEquip(1), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT + 85 * 3, + EQUIP_BLOCK_TOP, + core.getEquip(2), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT, + EQUIP_BLOCK_TOP + 45 * 3, + core.getEquip(3), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT + 42 * 3, + EQUIP_BLOCK_TOP + 45 * 3, + core.getEquip(4), + "#D1CEFF", + "无" + ); + drawEquip( + EQUIP_BLOCK_LEFT + 85 * 3, + EQUIP_BLOCK_TOP + 45 * 3, + core.getEquip(5), + "#D1CEFF", + "无" + ); + } + } + _update_keys() { + const drawKeyList = (baseX, baseY) => { + const todraw = [], + keyList = ["yellowKey", "blueKey", "redKey", "greenKey"]; + let total = 0; + keyList.forEach(function (key, i) { + todraw[i] = core.itemCount(key); + total += todraw[i]; + }); - let dn = 3; - for (let i = 0; i <= dn; i++) { - let delta = i * 32 * 3; + let dn = 3; + for (let i = 0; i <= dn; i++) { + let delta = i * 32 * 3; - if (core.domStyle.isVertical) { - this.drawKey(keyList[i], baseX, baseY + delta); - } else { - this.drawKey(keyList[i], baseX + delta, baseY); - } + if (core.domStyle.isVertical) { + this.drawKey(keyList[i], baseX, baseY + delta); + } else { + this.drawKey(keyList[i], baseX + delta, baseY); + } - core.setFont("outerUI", "bold 48px Verdana"); - core.setTextAlign("outerUI", "left"); - if (core.domStyle.isVertical) { - core.fillText( - "outerUI", - todraw[i], - baseX + 20 * 3, - baseY + 14 * 3 + delta, - TEXT_COLOR - ); - } else { - core.fillText( - "outerUI", - todraw[i], - baseX + delta, - baseY + 32 * 3, - TEXT_COLOR - ); - } - } - }; - if (core.domStyle.isVertical) { - core.clearMap( - "outerUI", - KEY_BLOCK_LEFT_VERTICAL, - KEY_BLOCK_TOP_VERTICAL, - 45 * 3, - 130 * 3 - ); - drawKeyList( - KEY_BLOCK_LEFT_VERTICAL + 3 * 3, - KEY_BLOCK_TOP_VERTICAL + 5 * 3 - ); - } else { - core.clearMap( - "outerUI", - KEY_BLOCK_LEFT, - KEY_BLOCK_TOP, - 130 * 3, - 45 * 3 - ); - drawKeyList(KEY_BLOCK_LEFT + 10 * 3, KEY_BLOCK_TOP); - } - } - drawKey(key, x, y) { - let sx = 0, - sy = 0; + core.setFont("outerUI", "bold 48px Verdana"); + core.setTextAlign("outerUI", "left"); + if (core.domStyle.isVertical) { + core.fillText( + "outerUI", + todraw[i], + baseX + 20 * 3, + baseY + 14 * 3 + delta, + TEXT_COLOR + ); + } else { + core.fillText( + "outerUI", + todraw[i], + baseX + delta, + baseY + 32 * 3, + TEXT_COLOR + ); + } + } + }; + if (core.domStyle.isVertical) { + core.clearMap( + "outerUI", + KEY_BLOCK_LEFT_VERTICAL, + KEY_BLOCK_TOP_VERTICAL, + 45 * 3, + 130 * 3 + ); + drawKeyList( + KEY_BLOCK_LEFT_VERTICAL + 3 * 3, + KEY_BLOCK_TOP_VERTICAL + 5 * 3 + ); + } else { + core.clearMap( + "outerUI", + KEY_BLOCK_LEFT, + KEY_BLOCK_TOP, + 130 * 3, + 45 * 3 + ); + drawKeyList(KEY_BLOCK_LEFT + 10 * 3, KEY_BLOCK_TOP); + } + } + drawKey(key, x, y) { + let sx = 0, + sy = 0; - if (key == "yellowKey") sx += 13; - else if (key == "blueKey") sx += 26; - else if (key == "greenKey") sx += 39; + if (key == "yellowKey") sx += 13; + else if (key == "blueKey") sx += 26; + else if (key == "greenKey") sx += 39; - core.drawImage( - "outerUI", - "maba.webp", - sx, - sy, - 13, - 26, - x, - y, - 13 * 3, - 26 * 3 - ); - } - _update_infoWindow() { - const itemId = this.selectedItem; - let text = ""; - if (this.selectedItem) { - text = core.replaceText(core.material.items[itemId]?.text); - if (text[0] == "," || text[0] == ",") text = text.substring(1); - } - if (core.domStyle.isVertical) { - core.clearMap( - "outerUI", - INFO_BLOCK_LEFT_VERTICAL, - INFO_BLOCK_TOP_VERTICAL, - 300 * 3, - 120 * 3 - ); + core.drawImage( + "outerUI", + "maba.webp", + sx, + sy, + 13, + 26, + x, + y, + 13 * 3, + 26 * 3 + ); + } + _update_infoWindow() { + const itemId = this.selectedItem; + let text = ""; + if (this.selectedItem) { + text = core.replaceText(core.material.items[itemId]?.text); + if (text[0] == "," || text[0] == ",") text = text.substring(1); + } + if (core.domStyle.isVertical) { + core.clearMap( + "outerUI", + INFO_BLOCK_LEFT_VERTICAL, + INFO_BLOCK_TOP_VERTICAL, + 300 * 3, + 120 * 3 + ); - if (this.selectedItem) { - const icon = core.material.icons.items[itemId]; - core.setTextAlign("outerUI", "left"); - core.fillText( - "outerUI", - core.material.items[itemId].name, - INFO_BLOCK_LEFT_VERTICAL + 50 * 3, - INFO_BLOCK_TOP_VERTICAL + 27 * 3, - "#D1CEFF" - ); - core.drawImage( - "outerUI", - core.material.images.items, - 0, - 32 * icon, - 32, - 32, - INFO_BLOCK_LEFT_VERTICAL + 10 * 3, - INFO_BLOCK_TOP_VERTICAL + 8 * 3, - 32 * 3, - 32 * 3 - ); - core.ui.drawTextContent("outerUI", text, { - left: INFO_BLOCK_LEFT_VERTICAL + 10 * 3, - top: INFO_BLOCK_TOP_VERTICAL + 40 * 3, - maxWidth: 275 * 3, - color: "#D1CEFF", - fontSize: 36, - }); - } - } else { - core.clearMap( - "outerUI", - INFO_BLOCK_LEFT, - INFO_BLOCK_TOP, - 115 * 3, - 230 * 3 - ); + if (this.selectedItem) { + const icon = core.material.icons.items[itemId]; + core.setTextAlign("outerUI", "left"); + core.fillText( + "outerUI", + core.material.items[itemId].name, + INFO_BLOCK_LEFT_VERTICAL + 50 * 3, + INFO_BLOCK_TOP_VERTICAL + 27 * 3, + "#D1CEFF" + ); + core.drawImage( + "outerUI", + core.material.images.items, + 0, + 32 * icon, + 32, + 32, + INFO_BLOCK_LEFT_VERTICAL + 10 * 3, + INFO_BLOCK_TOP_VERTICAL + 8 * 3, + 32 * 3, + 32 * 3 + ); + core.ui.drawTextContent("outerUI", text, { + left: INFO_BLOCK_LEFT_VERTICAL + 10 * 3, + top: INFO_BLOCK_TOP_VERTICAL + 40 * 3, + maxWidth: 275 * 3, + color: "#D1CEFF", + fontSize: 36, + }); + } + } else { + core.clearMap( + "outerUI", + INFO_BLOCK_LEFT, + INFO_BLOCK_TOP, + 115 * 3, + 230 * 3 + ); - if (this.selectedItem) { - const icon = core.material.icons.items[itemId]; - core.setTextAlign("outerUI", "center"); - core.fillText( - "outerUI", - core.material.items[itemId].name, - INFO_BLOCK_LEFT + 60 * 3, - INFO_BLOCK_TOP + 25 * 3, - "#D1CEFF" - ); - core.drawImage( - "outerUI", - core.material.images.items, - 0, - 32 * icon, - 32, - 32, - INFO_BLOCK_LEFT + 45 * 3, - INFO_BLOCK_TOP + 30 * 3, - 32 * 3, - 32 * 3 - ); - core.ui.drawTextContent("outerUI", text, { - left: INFO_BLOCK_LEFT + 10 * 3, - top: INFO_BLOCK_TOP + 60 * 3, - maxWidth: 105 * 3, - color: "#D1CEFF", - fontSize: 36, - }); - } - } - } - showItemInfo(itemId) { - //展示道具说明 - this.selectedItem = itemId; - this._update_infoWindow(); - } - clearItemInfo() { - //清除道具说明 - this.selectedItem = null; - this._update_infoWindow(); - } - _update_toolBox() { - const tools = core.isReplaying() ? [ - [core.status.replay.pausing ? "play" : "pause", "stop", "rewind"], - ["speedDown", "speedUp", "save"], - ] : [ - ["keyboard", "shop", "pack", "T332"], - ["settings", "save", "load", "T331"], - ]; - if (core.domStyle.isVertical) { - core.clearMap( - "outerUI", - TOOL_BOX_LEFT_VERTICAL, - TOOL_BOX_TOP_VERTICAL, - 115, - 130 - ); + if (this.selectedItem) { + const icon = core.material.icons.items[itemId]; + core.setTextAlign("outerUI", "center"); + core.fillText( + "outerUI", + core.material.items[itemId].name, + INFO_BLOCK_LEFT + 60 * 3, + INFO_BLOCK_TOP + 25 * 3, + "#D1CEFF" + ); + core.drawImage( + "outerUI", + core.material.images.items, + 0, + 32 * icon, + 32, + 32, + INFO_BLOCK_LEFT + 45 * 3, + INFO_BLOCK_TOP + 30 * 3, + 32 * 3, + 32 * 3 + ); + core.ui.drawTextContent("outerUI", text, { + left: INFO_BLOCK_LEFT + 10 * 3, + top: INFO_BLOCK_TOP + 60 * 3, + maxWidth: 105 * 3, + color: "#D1CEFF", + fontSize: 36, + }); + } + } + } + showItemInfo(itemId) { + //展示道具说明 + this.selectedItem = itemId; + this._update_infoWindow(); + } + clearItemInfo() { + //清除道具说明 + this.selectedItem = null; + this._update_infoWindow(); + } + _update_toolBox() { + const tools = core.isReplaying() + ? [ + [core.status.replay.pausing ? "play" : "pause", "stop", "rewind"], + ["speedDown", "speedUp", "save"], + ] + : [ + ["keyboard", "shop", "pack", "T332"], + ["settings", "save", "load", "T331"], + ]; + if (core.domStyle.isVertical) { + core.clearMap( + "outerUI", + TOOL_BOX_LEFT_VERTICAL, + TOOL_BOX_TOP_VERTICAL, + 115, + 130 + ); - for (let i = 0; i < tools.length; i++) { - for (let j = 0; j < tools[i].length; j++) { - core.drawIcon( - "outerUI", - tools[i][j], - TOOL_BOX_LEFT_VERTICAL + i * 31 * 3, - TOOL_BOX_TOP_VERTICAL + j * 31 * 3, - 30 * 3, - 30 * 3 - ); - } - } - } else { - core.clearMap( - "outerUI", - TOOL_BOX_LEFT, - TOOL_BOX_TOP, - 130 * 3, - 80 * 3 - ); + for (let i = 0; i < tools.length; i++) { + for (let j = 0; j < tools[i].length; j++) { + core.drawIcon( + "outerUI", + tools[i][j], + TOOL_BOX_LEFT_VERTICAL + i * 31 * 3, + TOOL_BOX_TOP_VERTICAL + j * 31 * 3, + 30 * 3, + 30 * 3 + ); + } + } + } else { + core.clearMap( + "outerUI", + TOOL_BOX_LEFT, + TOOL_BOX_TOP, + 130 * 3, + 80 * 3 + ); - for (let i = 0; i < tools.length; i++) { - for (let j = 0; j < tools[i].length; j++) { - core.drawIcon( - "outerUI", - tools[i][j], - TOOL_BOX_LEFT + j * 31 * 3, - TOOL_BOX_TOP + i * 31 * 3, - 30 * 3, - 30 * 3 - ); - } - } - } - } - onclick(x, y) { - const makeBox = ([x, y], [w, h]) => { - return [ - [x, y], - [x + w, y + h], - ]; - }; - const gridify = ([x, y], [gw, gh]) => { - return [Math.floor(x / gw), Math.floor(y / gh)]; - }; - const useItem = (itemId) => { - if (!core.hasItem(itemId)) return; + for (let i = 0; i < tools.length; i++) { + for (let j = 0; j < tools[i].length; j++) { + core.drawIcon( + "outerUI", + tools[i][j], + TOOL_BOX_LEFT + j * 31 * 3, + TOOL_BOX_TOP + i * 31 * 3, + 30 * 3, + 30 * 3 + ); + } + } + } + } + onclick(x, y) { + const makeBox = ([x, y], [w, h]) => { + return [ + [x, y], + [x + w, y + h], + ]; + }; + const gridify = ([x, y], [gw, gh]) => { + return [Math.floor(x / gw), Math.floor(y / gh)]; + }; + const useItem = (itemId) => { + if (!core.hasItem(itemId)) return; - if (itemId != this.selectedItem) { - this.showItemInfo(itemId); - } else { - switch (itemId) { - case "centerFly": - core.ui._drawCenterFly(); - break; - case "book": - core.openBook(true); - break; - case "wand": - core.insertAction({ - type: "useItem", - id: itemId, - }); - break; - case "fly": - core.useItem(itemId, true); - break; - default: - core.useItem(itemId); - } - } - }; - const inRect = ([x, y], [ - [sx, sy], - [dx, dy] - ]) => { - return sx <= x && x <= dx && sy <= y && y <= dy; - }; - const relativeTo = ([x, y], [ax, ay]) => { - return [x - ax, y - ay]; - }; - const pos = [x, y]; - if (core.domStyle.isVertical) { - const itemBox = makeBox( - [ITEM_BOX_LEFT_VERTICAL, ITEM_BOX_TOP_VERTICAL], - [30 * 6 * 3, 31 * 4 * 3] - ); - if (inRect(pos, itemBox)) { - const [gx, gy] = gridify(relativeTo(pos, itemBox[0]), [ - 30 * 3, - 31 * 3, - ]); - const itemId = this.itemMx[gx][gy]; - if ( - (core.status.event.id == "viewMaps" || - core.status.event.id == "fly") && - itemId === "book" - ) - core.openBook(true); - if ( - core.isReplaying() || - core.status.lockControl || - core.isMoving() - ) - return; - useItem(itemId); - return; - } - const toolBox = makeBox( - [TOOL_BOX_LEFT_VERTICAL, TOOL_BOX_TOP_VERTICAL], - [31 * 2 * 3, 31 * 4 * 3] - ); - if (inRect(pos, toolBox)) { - const [col, row] = gridify(relativeTo(pos, toolBox[0]), [ - 31 * 3, - 31 * 3, - ]); - if (core.isReplaying()) { - this.replayAction[col][row].call(core); - } else if (core.isPlaying()) { - if (col === 0 && row === 3) { - core.doSL("autoSave", "load"); - } else if (col === 1 && row === 3) { - core.doSL("autoSave", "reload"); - } else { - this.toolbarAction[col][row].call(core, true); - } - } - return; - } - const mapBox = makeBox( - [MAP_BLOCK_LEFT_VERTICAL, MAP_BLOCK_TOP_VERTICAL], - [350, 350] - ); - if (inRect(pos, mapBox)) { - if ( - core.isReplaying() || - core.status.lockControl || - core.isMoving() - ) - return; - core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId)); - return; - } - /*const equipBox = makeBox([EQUIP_BLOCK_LEFT_VERTICAL, EQUIP_BLOCK_TOP_VERTICAL], [90 * 3, 130 * 3]) + if (itemId != this.selectedItem) { + this.showItemInfo(itemId); + } else { + switch (itemId) { + case "centerFly": + core.ui._drawCenterFly(); + break; + case "book": + core.openBook(true); + break; + case "wand": + core.insertAction({ + type: "useItem", + id: itemId, + }); + break; + case "fly": + core.useItem(itemId, true); + break; + default: + core.useItem(itemId); + } + } + }; + const inRect = ([x, y], [[sx, sy], [dx, dy]]) => { + return sx <= x && x <= dx && sy <= y && y <= dy; + }; + const relativeTo = ([x, y], [ax, ay]) => { + return [x - ax, y - ay]; + }; + const pos = [x, y]; + if (core.domStyle.isVertical) { + const itemBox = makeBox( + [ITEM_BOX_LEFT_VERTICAL, ITEM_BOX_TOP_VERTICAL], + [30 * 6 * 3, 31 * 4 * 3] + ); + if (inRect(pos, itemBox)) { + const [gx, gy] = gridify(relativeTo(pos, itemBox[0]), [ + 30 * 3, + 31 * 3, + ]); + const itemId = this.itemMx[gx][gy]; + if ( + (core.status.event.id == "viewMaps" || + core.status.event.id == "fly") && + itemId === "book" + ) + core.openBook(true); + if ( + core.isReplaying() || + core.status.lockControl || + core.isMoving() + ) + return; + useItem(itemId); + return; + } + const toolBox = makeBox( + [TOOL_BOX_LEFT_VERTICAL, TOOL_BOX_TOP_VERTICAL], + [31 * 2 * 3, 31 * 4 * 3] + ); + if (inRect(pos, toolBox)) { + const [col, row] = gridify(relativeTo(pos, toolBox[0]), [ + 31 * 3, + 31 * 3, + ]); + if (core.isReplaying()) { + this.replayAction[col][row].call(core); + } else if (core.isPlaying()) { + if (col === 0 && row === 3) { + core.doSL("autoSave", "load"); + } else if (col === 1 && row === 3) { + core.doSL("autoSave", "reload"); + } else { + this.toolbarAction[col][row].call(core, true); + } + } + return; + } + const mapBox = makeBox( + [MAP_BLOCK_LEFT_VERTICAL, MAP_BLOCK_TOP_VERTICAL], + [350, 350] + ); + if (inRect(pos, mapBox)) { + if ( + core.isReplaying() || + core.status.lockControl || + core.isMoving() + ) + return; + core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId)); + return; + } + /*const equipBox = makeBox([EQUIP_BLOCK_LEFT_VERTICAL, EQUIP_BLOCK_TOP_VERTICAL], [90 * 3, 130 * 3]) if (inRect(pos, equipBox)) { if (core.isReplaying() || core.status.lockControl || core.isMoving()) return; core.openEquipbox(true) return; }*/ - } else { - const mapBox = makeBox([MAP_BLOCK_LEFT, MAP_BLOCK_TOP], [350, 350]); - if (inRect(pos, mapBox)) { - if ( - core.isReplaying() || - core.status.lockControl || - core.isMoving() - ) - return; - core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId)); - return; - } - /* + } else { + const mapBox = makeBox([MAP_BLOCK_LEFT, MAP_BLOCK_TOP], [350, 350]); + if (inRect(pos, mapBox)) { + if ( + core.isReplaying() || + core.status.lockControl || + core.isMoving() + ) + return; + core.ui._drawViewMaps(core.floorIds.indexOf(core.status.floorId)); + return; + } + /* const equipBox = makeBox([EQUIP_BLOCK_LEFT, EQUIP_BLOCK_TOP], [130, 95]) if (inRect(pos, equipBox)) { if (core.isReplaying() || core.status.lockControl || core.isMoving()) return; core.openEquipbox(true) return; }*/ - const itemBox = makeBox( - [ITEM_BOX_LEFT, ITEM_BOX_TOP], - [31 * 4 * 3, 30 * 6 * 3] - ); - if (inRect(pos, itemBox)) { - const [gx, gy] = gridify(relativeTo(pos, itemBox[0]), [ - 31 * 3, - 30 * 3, - ]); - const itemId = this.itemMx[gy][gx]; - if ( - (core.status.event.id == "viewMaps" || - core.status.event.id == "fly") && - itemId === "book" - ) - core.openBook(true); - if ( - core.isReplaying() || - core.status.lockControl || - core.isMoving() - ) - return; - useItem(itemId); - return; - } - const toolBox = makeBox( - [TOOL_BOX_LEFT, TOOL_BOX_TOP], - [31 * 4 * 3, 31 * 2 * 3] - ); - if (inRect(pos, toolBox)) { - const [row, col] = gridify(relativeTo(pos, toolBox[0]), [ - 31 * 3, - 31 * 3, - ]); - if (core.isReplaying()) { - this.replayAction[col][row].call(core); - } else if (core.isPlaying()) { - if (col === 0 && row === 3) { - core.doSL("autoSave", "load"); - } else if (col === 1 && row === 3) { - core.doSL("autoSave", "reload"); - } else { - this.toolbarAction[col][row].call(core, true); - } - } - return; - } - } - } - } + const itemBox = makeBox( + [ITEM_BOX_LEFT, ITEM_BOX_TOP], + [31 * 4 * 3, 30 * 6 * 3] + ); + if (inRect(pos, itemBox)) { + const [gx, gy] = gridify(relativeTo(pos, itemBox[0]), [ + 31 * 3, + 30 * 3, + ]); + const itemId = this.itemMx[gy][gx]; + if ( + (core.status.event.id == "viewMaps" || + core.status.event.id == "fly") && + itemId === "book" + ) + core.openBook(true); + if ( + core.isReplaying() || + core.status.lockControl || + core.isMoving() + ) + return; + useItem(itemId); + return; + } + const toolBox = makeBox( + [TOOL_BOX_LEFT, TOOL_BOX_TOP], + [31 * 4 * 3, 31 * 2 * 3] + ); + if (inRect(pos, toolBox)) { + const [row, col] = gridify(relativeTo(pos, toolBox[0]), [ + 31 * 3, + 31 * 3, + ]); + if (core.isReplaying()) { + this.replayAction[col][row].call(core); + } else if (core.isPlaying()) { + if (col === 0 && row === 3) { + core.doSL("autoSave", "load"); + } else if (col === 1 && row === 3) { + core.doSL("autoSave", "reload"); + } else { + this.toolbarAction[col][row].call(core, true); + } + } + return; + } + } + } + } - core.ui.statusBar = new StatusBar(); + core.ui.statusBar = new StatusBar(); - core.control.clearStatusBar = function () { - core.clearMap("outerUI"); - }; - // init() called in `afterLoadResources`. -}, - "override": function () { + core.control.clearStatusBar = function () { + core.clearMap("outerUI"); + }; + // init() called in `afterLoadResources`. + }, + override: function () { core.statusBar.icons = { floor: 0, name: null, @@ -4031,7 +4037,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = ctx.fillText(text, x, y); }; }, - "额外信息": function () { + 额外信息: function () { /* 宝石血瓶左下角显示数值 * 注意!!!不要在道具属性中直接操作flags,使用core.status.hero.flags或core.setFlag系列函数代替! * 需要将 变量:itemDetail改为true才可正常运行 @@ -4188,281 +4194,281 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } } }, - "编辑器显伤": function () { - // 在此增加新插件 - /////// 用户设置 /////// - // 将__enable置为false将关闭插件 - var __enable = true; - // 魔防攻速之类的属性可以在这里加 ['atk', 'def', 'mdef'] - var heroStatus = ["atk", "def", "mdef", "hp"]; - // saveHero为true 将会把每次造塔测试时的角色数据存下来 否则会读取初始属性 - // 用不着可以关了 节约缓存空间 (虽然根本没多少 还没一个存档大 - // 也可以手动清理 控制台输入core.removeLocalStorage('editorHero')即可 - var saveHero = true; + 编辑器显伤: function () { + // 在此增加新插件 + /////// 用户设置 /////// + // 将__enable置为false将关闭插件 + var __enable = true; + // 魔防攻速之类的属性可以在这里加 ['atk', 'def', 'mdef'] + var heroStatus = ["atk", "def", "mdef", "hp"]; + // saveHero为true 将会把每次造塔测试时的角色数据存下来 否则会读取初始属性 + // 用不着可以关了 节约缓存空间 (虽然根本没多少 还没一个存档大 + // 也可以手动清理 控制台输入core.removeLocalStorage('editorHero')即可 + var saveHero = true; - // 下为具体实现 懒得写注释了 大概就是写HTML然后注册交互 - if (!__enable || main.mode != "editor") return; - core.plugin.initEditorDamage = false; - if (heroStatus.length >= 4 && !editor.isMobile) - editor.dom.mid2.style.top = 650 + 30 * (heroStatus.length - 3) + "px"; - editor.statusRatio = core.getLocalStorage("statusRatio", 1); - editor.saveHero = saveHero; - editor._heroStatus = heroStatus; - editor.dom.mapEdit.appendChild(core.canvas.damage.canvas); - var HTML = - ""; + // 下为具体实现 懒得写注释了 大概就是写HTML然后注册交互 + if (!__enable || main.mode != "editor") return; + core.plugin.initEditorDamage = false; + if (heroStatus.length >= 4 && !editor.isMobile) + editor.dom.mid2.style.top = 650 + 30 * (heroStatus.length - 3) + "px"; + editor.statusRatio = core.getLocalStorage("statusRatio", 1); + editor.saveHero = saveHero; + editor._heroStatus = heroStatus; + editor.dom.mapEdit.appendChild(core.canvas.damage.canvas); + var HTML = + ""; - //if (heroStatus.length >= 4 && !editor.isMobile) editor.dom.mid2.style.top = 650 + 30 * (heroStatus.length - 3) + 'px'; - heroStatus.forEach(function (status) { - var id = status + "set", - id2 = status + "add", - id3 = status + "rec", - id4 = status + "help"; - HTML += - "
"; - }); - document.getElementById("viewportButtons").innerHTML = HTML; - ["set", "add", "rec", "help"].forEach(function (e) { - heroStatus.forEach(function (status) { - editor.dom[status + e] = document.getElementById(status + e); - }); - }); - var _hasItem = core.items.hasItem; - core.items.hasItem = function (itemId) { - if (itemId == "book" && main.mode == "editor") return true; - return _hasItem.call(core.items, itemId); - }; - if (main.mode == "editor") { - var applyList = [ - "getDamageString", - "nextCriticals", - "getEnemyInfo", - "getEnemyValue", - ]; - applyList.forEach(function (name) { - var func = core.enemys[name]; - core.enemys[name] = function () { - var args = - arguments.length === 1 ? - [arguments[0]] : - Array.apply(null, arguments); - if (typeof args[0] == "string") args[0] = core.enemys.enemys[args[0]]; - return func.apply(core.enemys, args); - }; - }); - } + //if (heroStatus.length >= 4 && !editor.isMobile) editor.dom.mid2.style.top = 650 + 30 * (heroStatus.length - 3) + 'px'; + heroStatus.forEach(function (status) { + var id = status + "set", + id2 = status + "add", + id3 = status + "rec", + id4 = status + "help"; + HTML += + "
"; + }); + document.getElementById("viewportButtons").innerHTML = HTML; + ["set", "add", "rec", "help"].forEach(function (e) { + heroStatus.forEach(function (status) { + editor.dom[status + e] = document.getElementById(status + e); + }); + }); + var _hasItem = core.items.hasItem; + core.items.hasItem = function (itemId) { + if (itemId == "book" && main.mode == "editor") return true; + return _hasItem.call(core.items, itemId); + }; + if (main.mode == "editor") { + var applyList = [ + "getDamageString", + "nextCriticals", + "getEnemyInfo", + "getEnemyValue", + ]; + applyList.forEach(function (name) { + var func = core.enemys[name]; + core.enemys[name] = function () { + var args = + arguments.length === 1 + ? [arguments[0]] + : Array.apply(null, arguments); + if (typeof args[0] == "string") args[0] = core.enemys.enemys[args[0]]; + return func.apply(core.enemys, args); + }; + }); + } - ////// 获得勇士属性 ////// - core.control.getStatus = function (name) { - if (!core.status.hero) return null; - if (name == "x" || name == "y" || name == "direction") - return this.getHeroLoc(name); - /*if ( main.mode == 'editor' && !core.hasFlag('__statistics__')) { + ////// 获得勇士属性 ////// + core.control.getStatus = function (name) { + if (!core.status.hero) return null; + if (name == "x" || name == "y" || name == "direction") + return this.getHeroLoc(name); + /*if ( main.mode == 'editor' && !core.hasFlag('__statistics__')) { return data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.firstData.hero[name]; }*/ - return core.status.hero[name]; - }; + return core.status.hero[name]; + }; - core.control.updateDamage = function (floorId, ctx) { - floorId = floorId || core.status.floorId; - if (!floorId || core.status.gameOver) return; - var onMap = ctx == null; - if (main.mode == "editor") { - ctx = core.canvas.damage; - core.updateCheckBlock(); - core.clearMap(ctx); - if (editor.uivalues.bigmap) return; - } + core.control.updateDamage = function (floorId, ctx) { + floorId = floorId || core.status.floorId; + if (!floorId || core.status.gameOver) return; + var onMap = ctx == null; + if (main.mode == "editor") { + ctx = core.canvas.damage; + core.updateCheckBlock(); + core.clearMap(ctx); + if (editor.uivalues.bigmap) return; + } - // 没有怪物手册 - if (!core.hasItem("book")) return; - core.status.damage.posX = core.bigmap.posX; - core.status.damage.posY = core.bigmap.posY; - if (!onMap) { - var width = core.floors[floorId].width, - height = core.floors[floorId].height; - // 地图过大的缩略图不绘制显伤 - if (width * height > core.bigmap.threshold) return; - } - this._updateDamage_damage(floorId, onMap); - this._updateDamage_extraDamage(floorId, onMap); - this.drawDamage(ctx); - }; + // 没有怪物手册 + if (!core.hasItem("book")) return; + core.status.damage.posX = core.bigmap.posX; + core.status.damage.posY = core.bigmap.posY; + if (!onMap) { + var width = core.floors[floorId].width, + height = core.floors[floorId].height; + // 地图过大的缩略图不绘制显伤 + if (width * height > core.bigmap.threshold) return; + } + this._updateDamage_damage(floorId, onMap); + this._updateDamage_extraDamage(floorId, onMap); + this.drawDamage(ctx); + }; - core.control.drawDamage = function (ctx) { - if ( - core.status.gameOver || - !core.status.damage /* || main.mode != 'play'*/ - ) - return; - var onMap = false; - if (ctx == null) { - ctx = core.canvas.damage; - core.clearMap("damage"); - onMap = true; - } + core.control.drawDamage = function (ctx) { + if ( + core.status.gameOver || + !core.status.damage /* || main.mode != 'play'*/ + ) + return; + var onMap = false; + if (ctx == null) { + ctx = core.canvas.damage; + core.clearMap("damage"); + onMap = true; + } - if (onMap && core.bigmap.v2) { - // 检查是否需要重算... - if ( - Math.abs(core.bigmap.posX - core.status.damage.posX) >= - core.bigmap.extend - 1 || - Math.abs(core.bigmap.posY - core.status.damage.posY) >= - core.bigmap.extend - 1 - ) { - return this.updateDamage(); - } - } - return this._drawDamage_draw(ctx, onMap); - }; + if (onMap && core.bigmap.v2) { + // 检查是否需要重算... + if ( + Math.abs(core.bigmap.posX - core.status.damage.posX) >= + core.bigmap.extend - 1 || + Math.abs(core.bigmap.posY - core.status.damage.posY) >= + core.bigmap.extend - 1 + ) { + return this.updateDamage(); + } + } + return this._drawDamage_draw(ctx, onMap); + }; - ////// 以x,y的形式返回每个点的事件 ////// - core.maps.getMapBlocksObj = function (floorId, noCache) { - floorId = floorId || core.status.floorId; - if ( - core.status.mapBlockObjs[floorId] && - !noCache && - main.mode != "editor" - ) - return core.status.mapBlockObjs[floorId]; + ////// 以x,y的形式返回每个点的事件 ////// + core.maps.getMapBlocksObj = function (floorId, noCache) { + floorId = floorId || core.status.floorId; + if ( + core.status.mapBlockObjs[floorId] && + !noCache && + main.mode != "editor" + ) + return core.status.mapBlockObjs[floorId]; - var obj = {}; - core.extractBlocks(floorId); - core.status.maps[floorId].blocks.forEach(function (block) { - obj[block.x + "," + block.y] = block; - }); - core.status.mapBlockObjs[floorId] = obj; - return obj; - }; + var obj = {}; + core.extractBlocks(floorId); + core.status.maps[floorId].blocks.forEach(function (block) { + obj[block.x + "," + block.y] = block; + }); + core.status.mapBlockObjs[floorId] = obj; + return obj; + }; - this.bignum = function (num, defaultValue) { - if (num == null || num == "") return defaultValue; - num = num + ""; - var list = { - w: 1e4, - e: 1e8, - z: 1e12, - j: 1e16, - g: 1e20, - }; - // 浮点数问题 - function checkFloat(num) { - if (!core.isset(num)) return 0; - num = num + ""; - var index = num.indexOf("."); - if (index < 0) return 0; - else return num.slice(index + 1).length; - } - var index = num.search(/w|e|z|j|g/); - if (index <= 0) { - num = parseInt(num); - if (core.isset(num)) return num; - else { - alert("不正确的输入"); - return defaultValue; - } - } - for (; index > 0; index = num.search(/w|e|z|j|g/)) { - var p = num[index], - q = list[p], - n = num.slice(0, index), - m = Math.pow(10, checkFloat(n)); - num = (n * m * q) / m + num.slice(index + 1); - } - return parseInt(num); - }; + this.bignum = function (num, defaultValue) { + if (num == null || num == "") return defaultValue; + num = num + ""; + var list = { + w: 1e4, + e: 1e8, + z: 1e12, + j: 1e16, + g: 1e20, + }; + // 浮点数问题 + function checkFloat(num) { + if (!core.isset(num)) return 0; + num = num + ""; + var index = num.indexOf("."); + if (index < 0) return 0; + else return num.slice(index + 1).length; + } + var index = num.search(/w|e|z|j|g/); + if (index <= 0) { + num = parseInt(num); + if (core.isset(num)) return num; + else { + alert("不正确的输入"); + return defaultValue; + } + } + for (; index > 0; index = num.search(/w|e|z|j|g/)) { + var p = num[index], + q = list[p], + n = num.slice(0, index), + m = Math.pow(10, checkFloat(n)); + num = (n * m * q) / m + num.slice(index + 1); + } + return parseInt(num); + }; - this.updateEditorDamage = function (noSave) { - core.updateDamage(); - heroStatus.forEach(function (status) { - editor.dom[status + "set"].value = core.status.hero[status]; - }); - if (!noSave && editor.saveHero) - core.setLocalStorage("editorHero", core.status.hero); - }; + this.updateEditorDamage = function (noSave) { + core.updateDamage(); + heroStatus.forEach(function (status) { + editor.dom[status + "set"].value = core.status.hero[status]; + }); + if (!noSave && editor.saveHero) + core.setLocalStorage("editorHero", core.status.hero); + }; - var _resizeMap = core.maps.resizeMap; - core.maps.resizeMap = function (floorId) { - _resizeMap.call(core.maps, floorId); - if (!core.plugin.initEditorDamage && main.mode == "editor") { - core.plugin.initEditorDamage = true; - var editorHero = core.getLocalStorage("editorHero"); - if (editorHero && saveHero) core.status.hero = editorHero; - else core.removeLocalStorage("editorHero"); - editor._heroStatus.forEach(function (e) { - editor.dom[e + "set"].onchange = function () { - var status = this.id.slice(0, -3); - core.status.hero[status] = core.bignum( - this.value, - core.status.hero[status] - ); - core.updateEditorDamage(); - }; - editor.dom[e + "add"].onclick = function () { - var status = this.id.slice(0, -3); - core.status.hero[status] += editor.statusRatio; - core.updateEditorDamage(); - }; - editor.dom[e + "rec"].onclick = function () { - var status = this.id.slice(0, -3); - core.status.hero[status] -= editor.statusRatio; - core.updateEditorDamage(); - }; - editor.dom[e + "help"].onclick = function () { - var status = this.id.slice(0, -4), - name = core.getStatusLabel(status); - var ratio = parseInt( - prompt( - "当前属性:" + - name + - "\n现在的点击按钮变化值:" + - editor.statusRatio + - ",请输入按下一次+/-按钮的属性变化量,可以写4w 10.2e这种字母缩写" - ) - ); - if (!core.isset(ratio)) { - printe("不合法的输入"); - return; - } - editor.statusRatio = ratio; - core.setLocalStorage("statusRatio", ratio); - }; - }); - var _updateMap = editor.updateMap; - editor.updateMap = function () { - _updateMap.call(editor); - core.updateEditorDamage(true); - }; - editor.mode.onmode = function (mode, callback) { - if (editor_mode.mode != mode) { - if (mode === "save") { - editor_mode.doActionList( - editor_mode.mode, - editor_mode.actionList, - function () { - if (callback) callback(); - core.updateEditorDamage(); - } - ); - } - if (editor_mode.mode === "nextChange" && mode) - editor_mode.showMode(mode); - if (mode !== "save") editor_mode.mode = mode; - editor_mode.actionList = []; - } - }; - } - }; -}, - "手册区分特殊属性": function () { + var _resizeMap = core.maps.resizeMap; + core.maps.resizeMap = function (floorId) { + _resizeMap.call(core.maps, floorId); + if (!core.plugin.initEditorDamage && main.mode == "editor") { + core.plugin.initEditorDamage = true; + var editorHero = core.getLocalStorage("editorHero"); + if (editorHero && saveHero) core.status.hero = editorHero; + else core.removeLocalStorage("editorHero"); + editor._heroStatus.forEach(function (e) { + editor.dom[e + "set"].onchange = function () { + var status = this.id.slice(0, -3); + core.status.hero[status] = core.bignum( + this.value, + core.status.hero[status] + ); + core.updateEditorDamage(); + }; + editor.dom[e + "add"].onclick = function () { + var status = this.id.slice(0, -3); + core.status.hero[status] += editor.statusRatio; + core.updateEditorDamage(); + }; + editor.dom[e + "rec"].onclick = function () { + var status = this.id.slice(0, -3); + core.status.hero[status] -= editor.statusRatio; + core.updateEditorDamage(); + }; + editor.dom[e + "help"].onclick = function () { + var status = this.id.slice(0, -4), + name = core.getStatusLabel(status); + var ratio = parseInt( + prompt( + "当前属性:" + + name + + "\n现在的点击按钮变化值:" + + editor.statusRatio + + ",请输入按下一次+/-按钮的属性变化量,可以写4w 10.2e这种字母缩写" + ) + ); + if (!core.isset(ratio)) { + printe("不合法的输入"); + return; + } + editor.statusRatio = ratio; + core.setLocalStorage("statusRatio", ratio); + }; + }); + var _updateMap = editor.updateMap; + editor.updateMap = function () { + _updateMap.call(editor); + core.updateEditorDamage(true); + }; + editor.mode.onmode = function (mode, callback) { + if (editor_mode.mode != mode) { + if (mode === "save") { + editor_mode.doActionList( + editor_mode.mode, + editor_mode.actionList, + function () { + if (callback) callback(); + core.updateEditorDamage(); + } + ); + } + if (editor_mode.mode === "nextChange" && mode) + editor_mode.showMode(mode); + if (mode !== "save") editor_mode.mode = mode; + editor_mode.actionList = []; + } + }; + } + }; + }, + 手册区分特殊属性: function () { // 在此增加新插件 this.arrsame = function (Arraya, Arrayb) { let a = Arraya || []; @@ -4814,7 +4820,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = return [enemy, texts]; }; }, - "一防减伤": function () { + 一防减伤: function () { // 在此增加新插件 ui.prototype._drawBook_drawRow3 = function ( index, @@ -4888,7 +4894,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = return this.getDefDamage(enemy, null, x, y, floorId); }; }, - "新道具栏/装备栏": function () { + "新道具栏/装备栏": function () { // 在此增加新插件 // 注:///// *** 裹起来的区域: 该区域内参数可以随意更改调整ui绘制 不会影响总体布局 // 请尽量修改该区域而不是其他区域 修改的时候最好可以对照现有ui修改 @@ -5272,6 +5278,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = itemText = core.replaceText(itemText); if (itemText[0] == "," || itemText[0] == ",") itemText = itemText.substring(1); + /* 一个根据道具id修改道具名字(右栏)的例子 * if (item.id == "xxx") itemNameColor = "red"; */ @@ -5299,6 +5306,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = ); core.setTextAlign(ctx, "left"); core.setTextBaseline(ctx, "middle"); + if (itemCls === "equips" && item.id) { + itemName = "【" + item.equipCls + "】" + itemName; + } core.fillText( ctx, itemName, @@ -5308,45 +5318,83 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = itemNameFont, itemNameMaxWidth ); - core.fillText( - ctx, - "【" + itemClsName + "】", - itemCls_x, - itemCls_middle, - itemClsColor, - itemClsFont - ); - var statusText = "【装备类型】" + item.equipCls + "\n\n"; - /*if (core.status.event.id == "equipbox") { - var type = item.equip.type; - if (typeof type == "string") type = core.getEquipTypeByName(type); - var compare = core.compareEquipment(item.id, core.getEquip(type)); - if (info.select.action == "unload") compare = core.compareEquipment(null, item.id); - // --- 变化值... - for (var name in core.status.hero) { - if (typeof core.status.hero[name] != 'number') continue; - var nowValue = core.getRealStatus(name); - // 查询新值 - var newValue = Math.floor((core.getStatus(name) + (compare.value[name] || 0)) * - (core.getBuff(name) * 100 + (compare.percentage[name] || 0)) / 100); - if (nowValue == newValue) continue; - var color = newValue > nowValue ? '#00FF00' : '#FF0000'; - nowValue = core.formatBigNumber(nowValue); - newValue = core.formatBigNumber(newValue); - statusText += core.getStatusLabel(name) + " " + nowValue + "->\r[" + color + "]" + newValue + "\r\n"; - } - }*/ + if (!item.equip) + core.fillText( + ctx, + "【" + itemClsName + "】", + itemCls_x, + itemCls_middle, + itemClsColor, + itemClsFont + ); + + var statusText = ""; + if (core.status.event.id == "equipbox") { + var type = item.equip.type; + if (typeof type == "string") type = core.getEquipTypeByName(type); + var compare = core.compareEquipment(item.id, core.getEquip(type)); + var compare2; + if (item.equipCls === "双手剑") + compare2 = core.compareEquipment(null, core.getEquip(1)); + if (info.select.action == "unload") + compare = core.compareEquipment(null, item.id); + // --- 变化值... + for (var name in core.status.hero) { + if (typeof core.status.hero[name] != "number") continue; + var nowValue = core.getRealStatus(name); + // 查询新值 + var newValue = Math.floor( + ((core.getStatus(name) + + (compare.value[name] || 0) + + (compare2?.value[name] || 0)) * + (core.getBuff(name) * 100 + + (compare.percentage[name] || 0) + + (compare2?.percentage[name] || 0))) / + 100 + ); + if (nowValue == newValue) continue; + var color = newValue > nowValue ? "#00FF00" : "#FF0000"; + nowValue = core.formatBigNumber(nowValue); + newValue = core.formatBigNumber(newValue); + statusText += + core.getStatusLabel(name) + + " " + + nowValue + + "->\r[" + + color + + "]" + + newValue + + "\r\n"; + } + } itemText = statusText + itemText; - core.drawTextContent(ctx, itemText, { - left: itemText_x, - top: itemText_y, - bold: false, - color: "white", - align: "left", - fontSize: itemTextFontSize, - maxWidth: - rightbar_width - (itemText_x - rightbar_x) * 2 + itemTextFontSize / 2, - }); + if (item.equip) { + core.drawTextContent(ctx, itemText, { + left: itemText_x, + top: itemCls_middle, + bold: false, + color: "white", + align: "left", + fontSize: itemTextFontSize, + maxWidth: + rightbar_width - + (itemText_x - rightbar_x) * 2 + + itemTextFontSize / 2, + }); + } else { + core.drawTextContent(ctx, itemText, { + left: itemText_x, + top: itemText_y, + bold: false, + color: "white", + align: "left", + fontSize: itemTextFontSize, + maxWidth: + rightbar_width - + (itemText_x - rightbar_x) * 2 + + itemTextFontSize / 2, + }); + } ///// *** 退出按钮设置 var btnRadius = 10; @@ -5419,7 +5467,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = len = toDrawList.length; ///// *** 装备格设置 - var maxItem = 4; + var maxItem = 2; var box_width = 32, box_height = 32, box_borderStyle = "#fff", @@ -5445,8 +5493,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = var space_y = (equipList_height - maxLine * oneBoxHeight) / (1 + maxLine), space_x = (equipList_width - maxItem * oneBoxWidth) / (1 + maxItem); var box_x = equipList_x + space_x, - box_y = equipList_y + space_y; - for (var i = 0; i < len; i++) { + box_y = equipList_y + space_y + 12; + for (var i = 0; i < 2; i++) { var id = core.getEquip(i), name = toDrawList[i]; if (i === 0) name = "主手"; @@ -5490,28 +5538,90 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = core.drawLine( ctx, equipList_x + space_x + space_x + oneBoxWidth, - equipList_y + space_y, + equipList_y + space_y + 12, equipList_x + space_x + space_x + oneBoxWidth + box_width + box_borderWidth, - equipList_y + space_y + box_height + equipList_y + space_y + box_height + 12 ); core.drawLine( ctx, equipList_x + space_x + space_x + oneBoxWidth, - equipList_y + space_y + box_height, + equipList_y + space_y + box_height + 12, equipList_x + space_x + space_x + oneBoxWidth + box_width + box_borderWidth, - equipList_y + space_y + equipList_y + space_y + 12 ); } + ///// *** 装备格设置 + var maxItem = 3; + var box_width = 32, + box_height = 32, + box_borderStyle = "#fff", + box_selectBorderStyle = "gold", // 选中的装备格的颜色 + box_borderWidth = 2; + var boxName_fontSize = 14, + boxName_space = 2, + boxName_color = "#fff"; // 装备格名称与上面的装备格框的距离 + var maxLine = Math.ceil(len / maxItem); + ///// *** + var l = Math.sqrt(len); + if (Math.pow(l) == len && len != 4) { + if (l <= maxItem) maxItem = l; + } + maxItem = Math.min(toDrawList.length, maxItem); + info.equips = maxItem; + + var boxName_font = core.ui._buildFont(boxName_fontSize); + // 总宽高减去所有装备格宽高得到空隙大小 + var oneBoxWidth = box_width + box_borderWidth * 2; + var oneBoxHeight = + box_height + boxName_fontSize + boxName_space + 2 * box_borderWidth; + var space_y = (equipList_height - maxLine * oneBoxHeight) / (1 + maxLine), + space_x = (equipList_width - maxItem * oneBoxWidth) / (1 + maxItem); + var box_x = equipList_x + space_x, + box_y = equipList_y + space_y + space_y + oneBoxHeight; + for (var i = 2; i < len; i++) { + var id = core.getEquip(i), + name = toDrawList[i]; + var selectBorder = false; + if (core.status.thisUIEventInfo.select.type == i) selectBorder = true; + var borderStyle = selectBorder + ? box_selectBorderStyle + : box_borderStyle; + core.drawEquipbox_drawOne( + ctx, + name, + id, + box_x, + box_y, + box_width, + box_height, + boxName_space, + boxName_font, + boxName_color, + borderStyle, + box_borderWidth + ); + var todo = new Function( + "core.clickOneEquipbox('" + id + "'," + i + ")" + ); + core.addUIEventListener( + box_x - box_borderWidth / 2, + box_y - box_borderWidth / 2, + oneBoxWidth, + oneBoxHeight, + todo + ); + box_x += space_x + oneBoxWidth; + } }; this.drawToolbox = function (ctx) { @@ -5808,43 +5918,6 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = let equipClsid = core.material.items[id]?.equipCls; let equipCls0 = core.material.items[core.getEquip(0)]?.equipCls; let equipCls1 = core.material.items[core.getEquip(1)]?.equipCls; - if (equipCls0 === "双手剑") { - core.unloadEquip(0, function () { - core.status.route.push("unEquip:" + 0); - }); - } - if (equipClsid === "单手剑") { - if ( - equipCls1 !== "单手剑" && - equipCls1 !== "匕首" && - equipCls1 !== "盾牌" - ) { - core.unloadEquip(0, function () { - core.status.route.push("unEquip:" + 0); - }); - core.unloadEquip(1, function () { - core.status.route.push("unEquip:" + 1); - }); - } else if (equipCls0 !== "单手剑") { - core.unloadEquip(0, function () { - core.status.route.push("unEquip:" + 0); - }); - } - } - if (equipClsid === "法杖") { - if (equipCls1 !== "匕首" && equipCls1 !== "盾牌") { - core.unloadEquip(0, function () { - core.status.route.push("unEquip:" + 0); - }); - core.unloadEquip(1, function () { - core.status.route.push("unEquip:" + 1); - }); - } else { - core.unloadEquip(0, function () { - core.status.route.push("unEquip:" + 0); - }); - } - } if (equipClsid === "双手剑") { core.unloadEquip(0, function () { core.status.route.push("unEquip:" + 0); @@ -5853,34 +5926,6 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = core.status.route.push("unEquip:" + 1); }); } - if (equipClsid === "匕首") { - if (equipCls0 !== "匕首") { - core.unloadEquip(0, function () { - core.status.route.push("unEquip:" + 0); - }); - core.unloadEquip(1, function () { - core.status.route.push("unEquip:" + 1); - }); - } else { - core.unloadEquip(1, function () { - core.status.route.push("unEquip:" + 1); - }); - } - } - if (equipClsid === "盾牌") { - if (equipCls0 !== "单手剑" && equipCls0 !== "法杖") { - core.unloadEquip(0, function () { - core.status.route.push("unEquip:" + 0); - }); - core.unloadEquip(1, function () { - core.status.route.push("unEquip:" + 1); - }); - } else { - core.unloadEquip(1, function () { - core.status.route.push("unEquip:" + 1); - }); - } - } core.loadEquip(id, function () { core.status.route.push("equip:" + id); info.select.type = type; @@ -6286,7 +6331,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = core.registerReplayAction("equip", core.control._replayAction_equip); core.registerReplayAction("unEquip", core.control._replayAction_unEquip); }, - "技能树": function () { + 技能树: function () { // 在此增加新插件 // // 已学习的技能等级 flags._hasSkill_ @@ -7088,7 +7133,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = }; core.registerReplayAction("skill", control.prototype._replayAction_skill); }, - "animate": function () { + animate: function () { // -------------------- 插件说明 -------------------- // // github仓库:https://github.com/unanmed/animate @@ -7967,7 +8012,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = shake: B, }; }, - "func": function () { + func: function () { // 功能函数集,具体有哪些函数看每个函数前的注释即可 // 安装方式:直接复制到插件里面,注意新建插件自带的 function () { } 不能删 // 使用方式:可以直接使用对象解构按需引入 @@ -8407,7 +8452,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } }; }, - "怪物碎裂特效": function () { + 怪物碎裂特效: function () { // 在此增加新插件 // -------------------- 安装说明 -------------------- // // 先安装两个在插件简介中说明的前置插件 @@ -8651,22 +8696,22 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = applyFragWith, }; }, - "自定义常用事件": function () { - // editorBlocklyconfigPlus.js - // 自訂常見事件模板插件 - // 本插件引用了通用函數插件(Utility.js) - // 適用樣板:2.10.3 - // 請注意: - // 此插件對事件編輯器(editor_blocklyconfig)進行複寫,若還有其它針對事件編輯器做複寫的插件,請謹慎使用! - // 此插件對表格操作行為(editor_mode.doActionList)進行複寫,若還有其它對表格操作行為做複寫的插件,請謹慎使用! - // 使用方法: - // 現在在主頁下拉選單多了個常用事件模版,在那邊可以自由設定常用事件模板。 - // 設定完後按F5刷新,再到事件編輯器看就有你設定好的常用事件模板了。 + 自定义常用事件: function () { + // editorBlocklyconfigPlus.js + // 自訂常見事件模板插件 + // 本插件引用了通用函數插件(Utility.js) + // 適用樣板:2.10.3 + // 請注意: + // 此插件對事件編輯器(editor_blocklyconfig)進行複寫,若還有其它針對事件編輯器做複寫的插件,請謹慎使用! + // 此插件對表格操作行為(editor_mode.doActionList)進行複寫,若還有其它對表格操作行為做複寫的插件,請謹慎使用! + // 使用方法: + // 現在在主頁下拉選單多了個常用事件模版,在那邊可以自由設定常用事件模板。 + // 設定完後按F5刷新,再到事件編輯器看就有你設定好的常用事件模板了。 - if (main.mode == "editor") { - //#region 配置表格初始化 - let TableFileName = "project/table/CommonEventTemplate_comment.js"; - let TableRow = ` + if (main.mode == "editor") { + //#region 配置表格初始化 + let TableFileName = "project/table/CommonEventTemplate_comment.js"; + let TableRow = ` var CommonEventTemplate_comment = {"_type": "object", "_data": { "CommonEventTemplate": { @@ -8709,221 +8754,241 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } }} `; - if (!events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate) { - /** - * @type {{[EvnetName:actionParserJson]}} - */ - events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate = { - 检测音乐如果没有开启则系统提示开启: [{ - type: "if", - condition: "!core.musicStatus.bgmStatus", - true: [ - "\t[系统提示]你当前音乐处于关闭状态,本塔开音乐游戏效果更佳", - ], - false: [], - }, ], - 仿新新魔塔一次性商人: [{ - type: "if", - condition: "switch:A", - true: [ - "\t[行商,trader]\b[this]这是购买我的道具后我给玩家的提示。", - { - type: "comment", - text: "下一条指令可视情况使用或不使用", - }, - { - type: "hide", - remove: true, - time: 250, - }, - ], - false: [{ - type: "confirm", - text: "我有3把黄钥匙,\n你出50金币就卖给你。", - yes: [{ - type: "if", - condition: "status:money>=50", - true: [{ - type: "setValue", - name: "status:money", - operator: "-=", - value: "50", - }, - { - type: "setValue", - name: "item:yellowKey", - operator: "+=", - value: "3", - }, - { - type: "playSound", - name: "确定", - stop: true, - }, - { - type: "setValue", - name: "switch:A", - value: "true", - }, - ], - false: [{ - type: "playSound", - name: "操作失败", - }, - "\t[行商,trader]\b[this]你的金币不足!", - ], - }, ], - no: [], - }, ], - }, ], - 全地图选中一个点: [{ - type: "comment", - text: "全地图选中一个点,需要用鼠标或触屏操作", - }, - { - type: "setValue", - name: "temp:X", - value: "status:x", - }, - { - type: "setValue", - name: "temp:Y", - value: "status:y", - }, - { - type: "tip", - text: "再次点击闪烁位置确认", - }, - { - type: "while", - condition: "true", - data: [{ - type: "drawSelector", - image: "winskin.webp", - code: 1, - x: "32*temp:X", - y: "32*temp:Y", - width: 32, - height: 32, - }, - { - type: "wait", - }, - { - type: "if", - condition: "(flag:type === 1)", - true: [{ - type: "if", - condition: "((temp:X===flag:x)&&(temp:Y===flag:y))", - true: [{ - type: "break", - n: 1, - }, ], - }, - { - type: "setValue", - name: "temp:X", - value: "flag:x", - }, - { - type: "setValue", - name: "temp:Y", - value: "flag:y", - }, - ], - }, - ], - }, - { - type: "drawSelector", - code: 1, - }, - { - type: "comment", - text: "流程进行到这里可以对[X,Y]点进行处理,比如", - }, - { - type: "closeDoor", - id: "yellowDoor", - loc: ["temp:X", "temp:Y"], - }, - ], - 多阶段Boss战斗: [{ - type: "comment", - text: "多阶段boss,请直接作为战后事件使用", - }, - { - type: "setValue", - name: "switch:A", - operator: "+=", - value: "1", - }, - { - type: "switch", - condition: "switch:A", - caseList: [{ - case: "1", - action: [{ - type: "setBlock", - number: "redSlime", - }, - "\t[2阶段boss,redSlime]\b[this]你以为你已经打败我了吗?没听说过史莱姆有九条命吗?", - ], - }, - { - case: "2", - action: [{ - type: "setBlock", - number: "blackSlime", - }, - "\t[3阶段boss,blackSlime]\b[this]不能消灭我的,只会让我更强大!", - ], - }, - { - case: "3", - action: [{ - type: "setBlock", - number: "slimelord", - }, - "\t[4阶段boss,slimelord]\b[this]我还能打!", - ], - }, - { - case: "4", - action: ["\t[4阶段boss,slimelord]我一定会回来的!"], - }, - ], - }, - ], - }; - } - //#endregion + if (!events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate) { + /** + * @type {{[EvnetName:actionParserJson]}} + */ + events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate = { + 检测音乐如果没有开启则系统提示开启: [ + { + type: "if", + condition: "!core.musicStatus.bgmStatus", + true: [ + "\t[系统提示]你当前音乐处于关闭状态,本塔开音乐游戏效果更佳", + ], + false: [], + }, + ], + 仿新新魔塔一次性商人: [ + { + type: "if", + condition: "switch:A", + true: [ + "\t[行商,trader]\b[this]这是购买我的道具后我给玩家的提示。", + { + type: "comment", + text: "下一条指令可视情况使用或不使用", + }, + { + type: "hide", + remove: true, + time: 250, + }, + ], + false: [ + { + type: "confirm", + text: "我有3把黄钥匙,\n你出50金币就卖给你。", + yes: [ + { + type: "if", + condition: "status:money>=50", + true: [ + { + type: "setValue", + name: "status:money", + operator: "-=", + value: "50", + }, + { + type: "setValue", + name: "item:yellowKey", + operator: "+=", + value: "3", + }, + { + type: "playSound", + name: "确定", + stop: true, + }, + { + type: "setValue", + name: "switch:A", + value: "true", + }, + ], + false: [ + { + type: "playSound", + name: "操作失败", + }, + "\t[行商,trader]\b[this]你的金币不足!", + ], + }, + ], + no: [], + }, + ], + }, + ], + 全地图选中一个点: [ + { + type: "comment", + text: "全地图选中一个点,需要用鼠标或触屏操作", + }, + { + type: "setValue", + name: "temp:X", + value: "status:x", + }, + { + type: "setValue", + name: "temp:Y", + value: "status:y", + }, + { + type: "tip", + text: "再次点击闪烁位置确认", + }, + { + type: "while", + condition: "true", + data: [ + { + type: "drawSelector", + image: "winskin.webp", + code: 1, + x: "32*temp:X", + y: "32*temp:Y", + width: 32, + height: 32, + }, + { + type: "wait", + }, + { + type: "if", + condition: "(flag:type === 1)", + true: [ + { + type: "if", + condition: "((temp:X===flag:x)&&(temp:Y===flag:y))", + true: [ + { + type: "break", + n: 1, + }, + ], + }, + { + type: "setValue", + name: "temp:X", + value: "flag:x", + }, + { + type: "setValue", + name: "temp:Y", + value: "flag:y", + }, + ], + }, + ], + }, + { + type: "drawSelector", + code: 1, + }, + { + type: "comment", + text: "流程进行到这里可以对[X,Y]点进行处理,比如", + }, + { + type: "closeDoor", + id: "yellowDoor", + loc: ["temp:X", "temp:Y"], + }, + ], + 多阶段Boss战斗: [ + { + type: "comment", + text: "多阶段boss,请直接作为战后事件使用", + }, + { + type: "setValue", + name: "switch:A", + operator: "+=", + value: "1", + }, + { + type: "switch", + condition: "switch:A", + caseList: [ + { + case: "1", + action: [ + { + type: "setBlock", + number: "redSlime", + }, + "\t[2阶段boss,redSlime]\b[this]你以为你已经打败我了吗?没听说过史莱姆有九条命吗?", + ], + }, + { + case: "2", + action: [ + { + type: "setBlock", + number: "blackSlime", + }, + "\t[3阶段boss,blackSlime]\b[this]不能消灭我的,只会让我更强大!", + ], + }, + { + case: "3", + action: [ + { + type: "setBlock", + number: "slimelord", + }, + "\t[4阶段boss,slimelord]\b[this]我还能打!", + ], + }, + { + case: "4", + action: ["\t[4阶段boss,slimelord]我一定会回来的!"], + }, + ], + }, + ], + }; + } + //#endregion - // 新增模板選項 - let editModeSelect = document.getElementById("editModeSelect"); - let newEditModeOption = document.createElement("option"); - newEditModeOption.value = "CommonEventTemplate"; - newEditModeOption.text = "常見事件模板"; - editModeSelect.add(newEditModeOption); + // 新增模板選項 + let editModeSelect = document.getElementById("editModeSelect"); + let newEditModeOption = document.createElement("option"); + newEditModeOption.value = "CommonEventTemplate"; + newEditModeOption.text = "常見事件模板"; + editModeSelect.add(newEditModeOption); - //檢查可用的編輯模板ID - let leftIDNumber = 11 - 1; - let ExistLeftElement = document.querySelector(".main"); - while (ExistLeftElement) { - leftIDNumber++; - ExistLeftElement = document.getElementById(`left${leftIDNumber}`); - } + //檢查可用的編輯模板ID + let leftIDNumber = 11 - 1; + let ExistLeftElement = document.querySelector(".main"); + while (ExistLeftElement) { + leftIDNumber++; + ExistLeftElement = document.getElementById(`left${leftIDNumber}`); + } - //新增編輯模板 - let MainDiv = document.querySelector(".main"); + //新增編輯模板 + let MainDiv = document.querySelector(".main"); - let CommonEventTemplateMainDiv = document.createElement("div"); - CommonEventTemplateMainDiv.id = `left${leftIDNumber}`; - CommonEventTemplateMainDiv.className = "leftTab"; - CommonEventTemplateMainDiv.style.zIndex = "-1"; - CommonEventTemplateMainDiv.style.opacity = "0"; + let CommonEventTemplateMainDiv = document.createElement("div"); + CommonEventTemplateMainDiv.id = `left${leftIDNumber}`; + CommonEventTemplateMainDiv.className = "leftTab"; + CommonEventTemplateMainDiv.style.zIndex = "-1"; + CommonEventTemplateMainDiv.style.opacity = "0"; - CommonEventTemplateMainDiv.innerHTML = ` + CommonEventTemplateMainDiv.innerHTML = `

常見事件模板   @@ -8946,957 +9011,981 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = `; - MainDiv.appendChild(CommonEventTemplateMainDiv); + MainDiv.appendChild(CommonEventTemplateMainDiv); - (async function () { - //等待編輯器初始化 - while (!editor_mode.ids) { - await Sleep(100); - } - //新增編輯模板ID - editor_mode.ids["CommonEventTemplate"] = `left${leftIDNumber}`; - editor_mode.init_dom_ids(); - //切換至常見事件模板 - editor_mode.CommonEventTemplate = function (callback) { - var objs = []; - editor.file.editCommonEventTemplate([], function (objs_) { - objs = objs_; - //console.log(objs_) - }); - //只查询不修改时,内部实现不是异步的,所以可以这么写 - var tableinfo = editor.table.objToTable(objs[0], objs[1]); - document.getElementById( - "table_298572d8-93dd-4c6e-a278-6a7d49831e3a" - ).innerHTML = tableinfo.HTML; - tableinfo.listen(tableinfo.guids); - if (Boolean(callback)) callback(); - }; + (async function () { + //等待編輯器初始化 + while (!editor_mode.ids) { + await Sleep(100); + } + //新增編輯模板ID + editor_mode.ids["CommonEventTemplate"] = `left${leftIDNumber}`; + editor_mode.init_dom_ids(); + //切換至常見事件模板 + editor_mode.CommonEventTemplate = function (callback) { + var objs = []; + editor.file.editCommonEventTemplate([], function (objs_) { + objs = objs_; + //console.log(objs_) + }); + //只查询不修改时,内部实现不是异步的,所以可以这么写 + var tableinfo = editor.table.objToTable(objs[0], objs[1]); + document.getElementById( + "table_298572d8-93dd-4c6e-a278-6a7d49831e3a" + ).innerHTML = tableinfo.HTML; + tableinfo.listen(tableinfo.guids); + if (Boolean(callback)) callback(); + }; - //檢查配置表格存在 - let TableRowExist = null; - fs.readFile(TableFileName, "base64", function (err, data) { - if (err) { - console.log(`察覺常見事件模板配置表格不存在,原因:${err}`); - console.log("新建一個常見事件模板配置表格。"); - TableRowExist = false; - } else { - TableRowExist = true; - } - }); - //等待配置表格載入完畢(最多0.3秒,超過則視為失敗) - for (let i = 0; i < 3; i++) { - if (TableRowExist == null) { - await Sleep(100); - } - } - //配置表格初始化 - if (TableRowExist != true) { - fs.mkdir("project/table", function (err, data) { - if (err) throw `常見事件模板配置表格目錄初始化失敗,原因:${err}`; - }); - fs.writeFile( - TableFileName, - editor.util.encode64(TableRow || ""), - "base64", - function (err, data) { - if (err) throw `常見事件模板配置表格文件初始化失敗,原因:${err}`; - } - ); - } - //載入配置表格 - //editor.file.loadCommentjs(callback); - (function () { - var key = "CommonEventTemplate_comment"; - var script = document.createElement("script"); - script.src = "project/table/" + key + ".js"; - document.body.appendChild(script); - script.onload = function () { - editor.file[key] = eval(key.replace(".", "_")); - var loaded = Boolean(editor.file[key]); - }; - })(); - //按下配置表格 - editor_multi.CommonEventTemplateEditCommentJs = function (mod) { - editor_multi.lintAutocomplete = true; - editor_multi.setLint(); - editor_multi.importFile(TableFileName); - }; + //檢查配置表格存在 + let TableRowExist = null; + fs.readFile(TableFileName, "base64", function (err, data) { + if (err) { + console.log(`察覺常見事件模板配置表格不存在,原因:${err}`); + console.log("新建一個常見事件模板配置表格。"); + TableRowExist = false; + } else { + TableRowExist = true; + } + }); + //等待配置表格載入完畢(最多0.3秒,超過則視為失敗) + for (let i = 0; i < 3; i++) { + if (TableRowExist == null) { + await Sleep(100); + } + } + //配置表格初始化 + if (TableRowExist != true) { + fs.mkdir("project/table", function (err, data) { + if (err) throw `常見事件模板配置表格目錄初始化失敗,原因:${err}`; + }); + fs.writeFile( + TableFileName, + editor.util.encode64(TableRow || ""), + "base64", + function (err, data) { + if (err) throw `常見事件模板配置表格文件初始化失敗,原因:${err}`; + } + ); + } + //載入配置表格 + //editor.file.loadCommentjs(callback); + (function () { + var key = "CommonEventTemplate_comment"; + var script = document.createElement("script"); + script.src = "project/table/" + key + ".js"; + document.body.appendChild(script); + script.onload = function () { + editor.file[key] = eval(key.replace(".", "_")); + var loaded = Boolean(editor.file[key]); + }; + })(); + //按下配置表格 + editor_multi.CommonEventTemplateEditCommentJs = function (mod) { + editor_multi.lintAutocomplete = true; + editor_multi.setLint(); + editor_multi.importFile(TableFileName); + }; - //定義表格操作行為 - editor_mode.OriginDoActionList = editor_mode.doActionList; - editor_mode.doActionList = function (mode, actionList, callback) { - if (editor_mode.mode == "CommonEventTemplate") { - if (actionList.length == 0) return; - printf("修改中..."); - var cb = function (objs_) { - if (objs_.slice(-1)[0] != null) { - printe(objs_.slice(-1)[0]); - throw objs_.slice(-1)[0]; - } - var str = "修改成功!"; - if ( - data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.firstData.name == - "template" - ) - str += "
请注意:全塔属性的name尚未修改,请及时予以设置。"; - printf(str); - if (callback) callback(); - }; - editor.file.editCommonEventTemplate(actionList, cb); - } else { - editor_mode.OriginDoActionList(mode, actionList, callback); - } - }; - //添加表格列 - editor.table.CommonEventTemplateAddFunc = function () { - let obj = events_c12a15a8_c380_4b28_8144_256cba95f760; + //定義表格操作行為 + editor_mode.OriginDoActionList = editor_mode.doActionList; + editor_mode.doActionList = function (mode, actionList, callback) { + if (editor_mode.mode == "CommonEventTemplate") { + if (actionList.length == 0) return; + printf("修改中..."); + var cb = function (objs_) { + if (objs_.slice(-1)[0] != null) { + printe(objs_.slice(-1)[0]); + throw objs_.slice(-1)[0]; + } + var str = "修改成功!"; + if ( + data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d.firstData.name == + "template" + ) + str += "
请注意:全塔属性的name尚未修改,请及时予以设置。"; + printf(str); + if (callback) callback(); + }; + editor.file.editCommonEventTemplate(actionList, cb); + } else { + editor_mode.OriginDoActionList(mode, actionList, callback); + } + }; + //添加表格列 + editor.table.CommonEventTemplateAddFunc = function () { + let obj = events_c12a15a8_c380_4b28_8144_256cba95f760; - // 1.输入id - let newid = prompt("请输入新项的ID(支持中文)"); - if (newid == null || newid.length == 0) { - return; - } + // 1.输入id + let newid = prompt("请输入新项的ID(支持中文)"); + if (newid == null || newid.length == 0) { + return; + } - // 2.检查id是否符合规范或与已有id重复 - var conflict = true; - var basefield = "".replace(/\[[^\[]*\]$/, ""); + // 2.检查id是否符合规范或与已有id重复 + var conflict = true; + var basefield = "".replace(/\[[^\[]*\]$/, ""); - try { - var baseobj = eval("obj" + basefield); - conflict = newid in baseobj; - } catch (ee) { - // 理论上这里不会发生错误 - printe(ee); - throw ee; - } + try { + var baseobj = eval("obj" + basefield); + conflict = newid in baseobj; + } catch (ee) { + // 理论上这里不会发生错误 + printe(ee); + throw ee; + } - if (conflict) { - printe("id已存在, 请直接修改该项的值"); - return; - } + if (conflict) { + printe("id已存在, 请直接修改该项的值"); + return; + } - // 3.添加 - editor_mode.addAction(["add", basefield + "['" + newid + "']", null]); - editor_mode.onmode("save", function () { - printf("添加成功,刷新后生效;也可以继续新增其他项目。"); - }); //自动保存 删掉此行的话点保存按钮才会保存 - }; - //對表格的存讀 - editor.file.editCommonEventTemplate = function (actionList, callback) { - /*actionList:[ + // 3.添加 + editor_mode.addAction(["add", basefield + "['" + newid + "']", null]); + editor_mode.onmode("save", function () { + printf("添加成功,刷新后生效;也可以继续新增其他项目。"); + }); //自动保存 删掉此行的话点保存按钮才会保存 + }; + //對表格的存讀 + editor.file.editCommonEventTemplate = function (actionList, callback) { + /*actionList:[ ["change","['test']",['123']], ] 为[]时只查询不修改 */ - var data_obj = - events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate; - checkCallback(callback); - if (isset(actionList) && actionList.length > 0) { - actionList.forEach(function (value) { - value[1] = "['CommonEventTemplate']" + value[1]; - }); - editor.file.saveSetting("events", actionList, function (err) { - callback([err]); - }); - } else { - callback([ - Object.assign({}, data_obj), - editor.file.CommonEventTemplate_comment._data.CommonEventTemplate, - null, - ]); - } - }; - })(); + var data_obj = + events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate; + checkCallback(callback); + if (isset(actionList) && actionList.length > 0) { + actionList.forEach(function (value) { + value[1] = "['CommonEventTemplate']" + value[1]; + }); + editor.file.saveSetting("events", actionList, function (err) { + callback([err]); + }); + } else { + callback([ + Object.assign({}, data_obj), + editor.file.CommonEventTemplate_comment._data.CommonEventTemplate, + null, + ]); + } + }; + })(); - //複寫事件編輯器(editor_blocklyconfig) - editor_blocklyconfig = function () { - // start mark sfergsvae + //複寫事件編輯器(editor_blocklyconfig) + editor_blocklyconfig = function () { + // start mark sfergsvae - (function () { - var getCategory = function (name, custom) { - for (var node of document.getElementById("toolbox").children) { - if (node.getAttribute("name") == name) return node; - } - var node = document.createElement("category"); - node.setAttribute("name", name); - if (custom) node.setAttribute("custom", custom); - document.getElementById("toolbox").appendChild(node); - return node; - }; + (function () { + var getCategory = function (name, custom) { + for (var node of document.getElementById("toolbox").children) { + if (node.getAttribute("name") == name) return node; + } + var node = document.createElement("category"); + node.setAttribute("name", name); + if (custom) node.setAttribute("custom", custom); + document.getElementById("toolbox").appendChild(node); + return node; + }; - var toolboxObj = { - 入口方块: [ - '', - MotaActionFunctions.actionParser.parse( - [ - "欢迎使用事件编辑器", - "本事件触发一次后会消失", - { type: "hide", time: 500 }, - ], - "event" - ), - MotaActionFunctions.actionParser.parse({ - condition: "flag:__door__===2", - currentFloor: true, - priority: 0, - delayExecute: false, - multiExecute: false, - data: [{ type: "openDoor", loc: [10, 5] }], - }, - "autoEvent" - ), - MotaActionBlocks["changeFloor_m"].xmlText(), - MotaActionFunctions.actionParser.parse( - [{ - id: "shop1", - text: "\t[贪婪之神,moneyShop]勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:", - textInList: "1F金币商店", - choices: [{ - text: "生命+800", - need: "status:money>=20+2*flag:shop1", - action: [{ - type: "comment", - text: "新版商店中需要手动扣减金币和增加访问次数", - }, - { - type: "setValue", - name: "status:money", - operator: "-=", - value: "20+2*flag:shop1", - }, - { - type: "setValue", - name: "flag:shop1", - operator: "+=", - value: "1", - }, - { - type: "setValue", - name: "status:hp", - operator: "+=", - value: "800", - }, - ], - }, ], - }, - { - id: "itemShop", - item: true, - textInList: "道具商店", - choices: [{ id: "yellowKey", number: 10, money: 10 }], - }, - { - id: "keyShop1", - textInList: "回收钥匙商店", - commonEvent: "回收钥匙商店", - args: "", - }, - ], - "shop" - ), - MotaActionBlocks["common_m"].xmlText(), - MotaActionBlocks["beforeBattle_m"].xmlText(), - MotaActionBlocks["afterBattle_m"].xmlText(), - MotaActionBlocks["afterGetItem_m"].xmlText(), - MotaActionBlocks["afterOpenDoor_m"].xmlText(), - MotaActionBlocks["firstArrive_m"].xmlText(), - MotaActionBlocks["eachArrive_m"].xmlText(), - MotaActionBlocks["level_m"].xmlText(), - MotaActionFunctions.actionParser.parse( - [ - ["MTx", ""] - ], - "floorPartition" - ), - MotaActionBlocks["commonEvent_m"].xmlText(), - MotaActionBlocks["item_m"].xmlText(), - MotaActionFunctions.actionParser.parse( - [{ - title: "简单", - name: "Easy", - hard: 1, - action: [ - { type: "comment", text: "在这里写该难度需执行的事件" }, - ], - }, ], - "levelChoose" - ), - MotaActionFunctions.actionParser.parse({ - type: 0, - value: { atk: 10 }, - percentage: { speed: 10 }, - }, - "equip" - ), - MotaActionFunctions.actionParser.parse( - [{ - name: "bg.webp", - x: 0, - y: 0, - canvas: "bg", - }, ], - "floorImage" - ), - MotaActionFunctions.actionParser.parse({ - time: 160, - openSound: "door.mp3", - closeSound: "door.mp3", - keys: { yellowKey: 1, orangeKey: 1 }, - }, - "doorInfo" - ), - MotaActionBlocks["faceIds_m"].xmlText(), - MotaActionBlocks["mainStyle_m"].xmlText(), - MotaActionFunctions.actionParser.parse({ - 背景音乐: "bgm.mp3", - 确定: "confirm.mp3", - 攻击: "attack.mp3", - 背景图: "bg.webp", - 领域: "zone", - 文件名: "file.jpg", - }, - "nameMap" - ), - MotaActionFunctions.actionParser.parse( - [{ name: "hero.webp", width: 32, height: 32, prefix: "hero_" }], - "splitImages" - ), - ], - 显示文字: [ - MotaActionBlocks["text_0_s"].xmlText(), - MotaActionBlocks["text_1_s"].xmlText(), - MotaActionFunctions.actionParser.parseList( - "\t[小妖精,fairy]\f[fairy.webp,0,0]欢迎使用事件编辑器(双击方块可直接预览)" - ), - MotaActionBlocks["over_s"].xmlText(), - MotaActionFunctions.actionParser.parseList([{ - type: "overlist", - image: "bg_5043.webp", - memory: false, - hidetime: 30, - list: [{ - text: "", - sound: "", - time: 50, - textColor: "255,255,255,1", - boldColor: "0,0,0,1", - font: "bold 48px Verdana", - frame: 0, - }, ], - }, ]), - MotaActionFunctions.actionParser.parseList([{ - type: "cgtext", - bg: "bg_5043.webp", - memory: false, - WindowSkin: false, - head: { name: "face_050445.webp", px: -300 }, - name: "菲奥奈", - time: 0, - wait: 2000, - sound: "", - text: "这句话显示在对话框内", - bodyList: [ - { name: "tati_050145a.webp", px: 100, filter: false }, - ], - }, ]), - MotaActionBlocks["moveTextBox_s"].xmlText(), - MotaActionBlocks["clearTextBox_s"].xmlText(), - MotaActionBlocks["comment_s"].xmlText(), - MotaActionBlocks["autoText_s"].xmlText(), - MotaActionBlocks["scrollText_s"].xmlText(), - MotaActionBlocks["setText_s"].xmlText(), - MotaActionBlocks["tip_s"].xmlText(), - MotaActionBlocks["addPop_s"].xmlText(), - MotaActionBlocks["confirm_s"].xmlText(), - MotaActionBlocks["choices_s"].xmlText([ - "选择剑或者盾", - "流浪者", - "man", - 0, - "", - MotaActionBlocks["choicesContext"].xmlText([ - "剑", - "", - "", - null, - "", - "", - MotaActionFunctions.actionParser.parseList([ - { type: "openDoor", loc: [3, 3] }, - ]), - ]), - ]), - MotaActionBlocks["win_s"].xmlText(), - MotaActionBlocks["lose_s"].xmlText(), - MotaActionBlocks["restart_s"].xmlText(), - ], - 数据相关: [ - MotaActionBlocks["setValue_s"].xmlText([ - MotaActionBlocks["idIdList_e"].xmlText(["status", "生命"]), - "=", - "", - false, - ]), - MotaActionBlocks["setEnemy_s"].xmlText(), - MotaActionBlocks["setEnemyOnPoint_s"].xmlText(), - MotaActionBlocks["resetEnemyOnPoint_s"].xmlText(), - MotaActionBlocks["moveEnemyOnPoint_s"].xmlText(), - MotaActionBlocks["moveEnemyOnPoint_1_s"].xmlText(), - MotaActionBlocks["setEquip_s"].xmlText(), - MotaActionBlocks["setFloor_s"].xmlText(), - MotaActionBlocks["setGlobalAttribute_s"].xmlText(), - MotaActionBlocks["setGlobalValue_s"].xmlText(), - MotaActionBlocks["setGlobalFlag_s"].xmlText(), - MotaActionBlocks["setNameMap_s"].xmlText(), - MotaActionBlocks["input_s"].xmlText(), - MotaActionBlocks["input2_s"].xmlText(), - MotaActionBlocks["update_s"].xmlText(), - MotaActionBlocks["moveAction_s"].xmlText(), - MotaActionBlocks["changeFloor_s"].xmlText(), - MotaActionBlocks["changePos_s"].xmlText(), - MotaActionBlocks["battle_s"].xmlText(), - MotaActionBlocks["useItem_s"].xmlText(), - MotaActionBlocks["loadEquip_s"].xmlText(), - MotaActionBlocks["unloadEquip_s"].xmlText(), - MotaActionBlocks["openShop_s"].xmlText(), - MotaActionBlocks["disableShop_s"].xmlText(), - MotaActionBlocks["setHeroIcon_s"].xmlText(), - MotaActionBlocks["follow_s"].xmlText(), - MotaActionBlocks["unfollow_s"].xmlText(), - ], - 地图处理: [ - MotaActionBlocks["battle_1_s"].xmlText(), - MotaActionBlocks["openDoor_s"].xmlText(), - MotaActionBlocks["closeDoor_s"].xmlText(), - MotaActionBlocks["show_s"].xmlText(), - MotaActionBlocks["hide_s"].xmlText(), - MotaActionBlocks["setBlock_s"].xmlText(), - MotaActionBlocks["setBlockOpacity_s"].xmlText(), - MotaActionBlocks["setBlockFilter_s"].xmlText(), - MotaActionBlocks["turnBlock_s"].xmlText(), - MotaActionBlocks["moveHero_s"].xmlText(), - MotaActionBlocks["move_s"].xmlText(), - MotaActionBlocks["jumpHero_s"].xmlText(), - MotaActionBlocks["jumpHero_1_s"].xmlText(), - MotaActionBlocks["jump_s"].xmlText(), - MotaActionBlocks["jump_1_s"].xmlText(), - MotaActionBlocks["showBgFgMap_s"].xmlText(), - MotaActionBlocks["hideBgFgMap_s"].xmlText(), - MotaActionBlocks["setBgFgBlock_s"].xmlText(), - MotaActionBlocks["showFloorImg_s"].xmlText(), - MotaActionBlocks["hideFloorImg_s"].xmlText(), - ], - 事件控制: [ - MotaActionBlocks["if_1_s"].xmlText(), - MotaActionBlocks["if_s"].xmlText(), - MotaActionFunctions.actionParser.parseList({ - type: "switch", - condition: "判别值", - caseList: [{ - action: [ - { type: "comment", text: "当判别值是值的场合执行此事件" }, - ], - }, - { - case: "default", - action: [{ - type: "comment", - text: "当没有符合的值的场合执行default事件", - }, ], - }, - ], - }), - MotaActionFunctions.actionParser.parseList({ - type: "for", - name: "temp:A", - from: "0", - to: "12", - step: "1", - data: [], - }), - MotaActionFunctions.actionParser.parseList({ - type: "forEach", - name: "temp:A", - list: ["status:atk", "status:def"], - data: [], - }), - MotaActionBlocks["while_s"].xmlText(), - MotaActionBlocks["dowhile_s"].xmlText(), - MotaActionBlocks["break_s"].xmlText(), - MotaActionBlocks["continue_s"].xmlText(), - MotaActionBlocks["exit_s"].xmlText(), - MotaActionBlocks["trigger_s"].xmlText(), - MotaActionBlocks["insert_1_s"].xmlText(), - MotaActionBlocks["insert_2_s"].xmlText(), - ], - 特效表现: [ - MotaActionBlocks["sleep_s"].xmlText(), - MotaActionBlocks["setq_s"].xmlText(), - MotaActionBlocks["changebg_s"].xmlText(), - MotaActionFunctions.actionParser.parseList({ - type: "wait", - timeout: 0, - data: [{ - case: "keyboard", - keycode: "13,32", - action: [{ - type: "comment", - text: "当按下回车(keycode=13)或空格(keycode=32)时执行此事件\n超时剩余时间会写入flag:timeout", - }, ], - }, - { - case: "mouse", - px: [0, 32], - py: [0, 32], - action: [{ - type: "comment", - text: "当点击地图左上角时执行此事件\n超时剩余时间会写入flag:timeout", - }, ], - }, - { - case: "condition", - condition: "flag:type==0\n&&flag:keycode==13", - action: [{ - type: "comment", - text: "当满足自定义条件时会执行此事件\n超时剩余时间会写入flag:timeout", - }, ], - }, - { - case: "timeout", - action: [ - { type: "comment", text: "当超时未操作时执行此事件" }, - ], - }, - ], - }), - MotaActionBlocks["waitAsync_s"].xmlText(), - MotaActionBlocks["stopAsync_s"].xmlText(), - MotaActionBlocks["op_s"].xmlText(), - MotaActionBlocks["drawWarning_s"].xmlText(), - MotaActionBlocks["changeMouse_s"].xmlText(), - MotaActionBlocks["removeMouse_s"].xmlText(), - MotaActionBlocks["vibrate_s"].xmlText(), - MotaActionBlocks["setanimate_s"].xmlText(), - MotaActionBlocks["deleteanimate_s"].xmlText(), - MotaActionBlocks["playanimate_s"].xmlText(), - MotaActionBlocks["clearanimate_s"].xmlText(), - MotaActionBlocks["animate_s"].xmlText(), - MotaActionBlocks["animate_1_s"].xmlText(), - MotaActionBlocks["stopAnimate_s"].xmlText(), - MotaActionBlocks["setViewport_s"].xmlText(), - MotaActionBlocks["setViewport_1_s"].xmlText(), - MotaActionBlocks["lockViewport_s"].xmlText(), - MotaActionBlocks["showStatusBar_s"].xmlText(), - MotaActionBlocks["hideStatusBar_s"].xmlText(), - MotaActionBlocks["setHeroOpacity_s"].xmlText(), - MotaActionBlocks["setCurtain_0_s"].xmlText(), - MotaActionBlocks["setCurtain_1_s"].xmlText(), - MotaActionBlocks["screenFlash_s"].xmlText(), - MotaActionBlocks["setWeather_s"].xmlText(), - MotaActionBlocks["callBook_s"].xmlText(), - MotaActionBlocks["callSave_s"].xmlText(), - MotaActionBlocks["autoSave_s"].xmlText(), - MotaActionBlocks["forbidSave_s"].xmlText(), - MotaActionBlocks["callLoad_s"].xmlText(), - ], - 音像处理: [ - MotaActionBlocks["animationDrawable_s"].xmlText(), - MotaActionBlocks["setcgs_s"].xmlText(), - MotaActionBlocks["showImage_s"].xmlText(), - MotaActionBlocks["showImage_1_s"].xmlText(), - MotaActionBlocks["hideImage_s"].xmlText(), - MotaActionBlocks["showTextImage_s"].xmlText(), - MotaActionBlocks["moveImage_s"].xmlText(), - MotaActionBlocks["rotateImage_s"].xmlText(), - MotaActionBlocks["scaleImage_s"].xmlText(), - MotaActionBlocks["showGif_s"].xmlText(), - MotaActionBlocks["playBgm_s"].xmlText(), - MotaActionBlocks["playStereo_s"].xmlText(), - MotaActionBlocks["moveStereo_s"].xmlText(), - MotaActionBlocks["pauseBgm_s"].xmlText(), - MotaActionBlocks["resumeBgm_s"].xmlText(), - MotaActionBlocks["loadBgm_s"].xmlText(), - MotaActionBlocks["freeBgm_s"].xmlText(), - MotaActionBlocks["playSound_s"].xmlText(), - MotaActionBlocks["playSound_1_s"].xmlText(), - MotaActionBlocks["stopSound_s"].xmlText(), - MotaActionBlocks["setVolume_s"].xmlText(), - MotaActionBlocks["setBgmSpeed_s"].xmlText(), - ], - UI绘制: [ - MotaActionBlocks["previewUI_s"].xmlText(), - MotaActionBlocks["clearMap_s"].xmlText(), - MotaActionBlocks["setAttribute_s"].xmlText(), - MotaActionBlocks["setFilter_s"].xmlText(), - MotaActionBlocks["fillText_s"].xmlText(), - MotaActionBlocks["fillBoldText_s"].xmlText(), - MotaActionBlocks["drawTextContent_s"].xmlText(), - MotaActionBlocks["fillRect_s"].xmlText(), - MotaActionBlocks["strokeRect_s"].xmlText(), - MotaActionBlocks["drawLine_s"].xmlText(), - MotaActionBlocks["drawArrow_s"].xmlText(), - MotaActionBlocks["fillPolygon_s"].xmlText(), - MotaActionBlocks["strokePolygon_s"].xmlText(), - MotaActionBlocks["fillEllipse_s"].xmlText(), - MotaActionBlocks["strokeEllipse_s"].xmlText(), - MotaActionBlocks["fillArc_s"].xmlText(), - MotaActionBlocks["strokeArc_s"].xmlText(), - MotaActionBlocks["drawImage_s"].xmlText(), - MotaActionBlocks["drawImage_1_s"].xmlText(), - MotaActionBlocks["drawIcon_s"].xmlText(), - MotaActionBlocks["drawBackground_s"].xmlText(), - MotaActionBlocks["drawSelector_s"].xmlText(), - MotaActionBlocks["drawSelector_1_s"].xmlText(), - ], - 原生脚本: [ - MotaActionBlocks["function_s"].xmlText(), - MotaActionBlocks["unknown_s"].xmlText(), - ], - 值块: [ - MotaActionBlocks["setValue_s"].xmlText([ - MotaActionBlocks["idIdList_e"].xmlText(["status", "生命"]), - "=", - "", - false, - ]), - MotaActionBlocks["expression_arithmetic_0"].xmlText(), - MotaActionBlocks["idFlag_e"].xmlText(), - MotaActionBlocks["idTemp_e"].xmlText(), - MotaActionBlocks["negate_e"].xmlText(), - MotaActionBlocks["unaryOperation_e"].xmlText(), - MotaActionBlocks["bool_e"].xmlText(), - MotaActionBlocks["idString_e"].xmlText(), - MotaActionBlocks["idIdList_e"].xmlText(), - MotaActionBlocks["idFixedList_e"].xmlText(), - MotaActionBlocks["enemyattr_e"].xmlText(), - MotaActionBlocks["blockId_e"].xmlText(), - MotaActionBlocks["blockNumber_e"].xmlText(), - MotaActionBlocks["blockCls_e"].xmlText(), - MotaActionBlocks["hasEquip_e"].xmlText(), - MotaActionBlocks["equip_e"].xmlText(), - MotaActionBlocks["nextXY_e"].xmlText(), - MotaActionBlocks["isReplaying_e"].xmlText(), - MotaActionBlocks["hasVisitedFloor_e"].xmlText(), - MotaActionBlocks["isShopVisited_e"].xmlText(), - MotaActionBlocks["canBattle_e"].xmlText(), - MotaActionBlocks["damage_e"].xmlText(), - MotaActionBlocks["damage_1_e"].xmlText(), - MotaActionBlocks["rand_e"].xmlText(), - MotaActionBlocks["evalString_e"].xmlText(), - ], - 常见事件模板: [ - '', - ], - 最近使用事件: [ - '', - ], - }; - var toolboxgap = ''; - //xml_text = MotaActionFunctions.actionParser.parse(obj,type||'event') - //MotaActionBlocks['idString_e'].xmlText() + var toolboxObj = { + 入口方块: [ + '', + MotaActionFunctions.actionParser.parse( + [ + "欢迎使用事件编辑器", + "本事件触发一次后会消失", + { type: "hide", time: 500 }, + ], + "event" + ), + MotaActionFunctions.actionParser.parse( + { + condition: "flag:__door__===2", + currentFloor: true, + priority: 0, + delayExecute: false, + multiExecute: false, + data: [{ type: "openDoor", loc: [10, 5] }], + }, + "autoEvent" + ), + MotaActionBlocks["changeFloor_m"].xmlText(), + MotaActionFunctions.actionParser.parse( + [ + { + id: "shop1", + text: "\t[贪婪之神,moneyShop]勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:", + textInList: "1F金币商店", + choices: [ + { + text: "生命+800", + need: "status:money>=20+2*flag:shop1", + action: [ + { + type: "comment", + text: "新版商店中需要手动扣减金币和增加访问次数", + }, + { + type: "setValue", + name: "status:money", + operator: "-=", + value: "20+2*flag:shop1", + }, + { + type: "setValue", + name: "flag:shop1", + operator: "+=", + value: "1", + }, + { + type: "setValue", + name: "status:hp", + operator: "+=", + value: "800", + }, + ], + }, + ], + }, + { + id: "itemShop", + item: true, + textInList: "道具商店", + choices: [{ id: "yellowKey", number: 10, money: 10 }], + }, + { + id: "keyShop1", + textInList: "回收钥匙商店", + commonEvent: "回收钥匙商店", + args: "", + }, + ], + "shop" + ), + MotaActionBlocks["common_m"].xmlText(), + MotaActionBlocks["beforeBattle_m"].xmlText(), + MotaActionBlocks["afterBattle_m"].xmlText(), + MotaActionBlocks["afterGetItem_m"].xmlText(), + MotaActionBlocks["afterOpenDoor_m"].xmlText(), + MotaActionBlocks["firstArrive_m"].xmlText(), + MotaActionBlocks["eachArrive_m"].xmlText(), + MotaActionBlocks["level_m"].xmlText(), + MotaActionFunctions.actionParser.parse( + [["MTx", ""]], + "floorPartition" + ), + MotaActionBlocks["commonEvent_m"].xmlText(), + MotaActionBlocks["item_m"].xmlText(), + MotaActionFunctions.actionParser.parse( + [ + { + title: "简单", + name: "Easy", + hard: 1, + action: [ + { type: "comment", text: "在这里写该难度需执行的事件" }, + ], + }, + ], + "levelChoose" + ), + MotaActionFunctions.actionParser.parse( + { + type: 0, + value: { atk: 10 }, + percentage: { speed: 10 }, + }, + "equip" + ), + MotaActionFunctions.actionParser.parse( + [ + { + name: "bg.webp", + x: 0, + y: 0, + canvas: "bg", + }, + ], + "floorImage" + ), + MotaActionFunctions.actionParser.parse( + { + time: 160, + openSound: "door.mp3", + closeSound: "door.mp3", + keys: { yellowKey: 1, orangeKey: 1 }, + }, + "doorInfo" + ), + MotaActionBlocks["faceIds_m"].xmlText(), + MotaActionBlocks["mainStyle_m"].xmlText(), + MotaActionFunctions.actionParser.parse( + { + 背景音乐: "bgm.mp3", + 确定: "confirm.mp3", + 攻击: "attack.mp3", + 背景图: "bg.webp", + 领域: "zone", + 文件名: "file.jpg", + }, + "nameMap" + ), + MotaActionFunctions.actionParser.parse( + [{ name: "hero.webp", width: 32, height: 32, prefix: "hero_" }], + "splitImages" + ), + ], + 显示文字: [ + MotaActionBlocks["text_0_s"].xmlText(), + MotaActionBlocks["text_1_s"].xmlText(), + MotaActionFunctions.actionParser.parseList( + "\t[小妖精,fairy]\f[fairy.webp,0,0]欢迎使用事件编辑器(双击方块可直接预览)" + ), + MotaActionBlocks["over_s"].xmlText(), + MotaActionFunctions.actionParser.parseList([ + { + type: "overlist", + image: "bg_5043.webp", + memory: false, + hidetime: 30, + list: [ + { + text: "", + sound: "", + time: 50, + textColor: "255,255,255,1", + boldColor: "0,0,0,1", + font: "bold 48px Verdana", + frame: 0, + }, + ], + }, + ]), + MotaActionFunctions.actionParser.parseList([ + { + type: "cgtext", + bg: "bg_5043.webp", + memory: false, + WindowSkin: false, + head: { name: "face_050445.webp", px: -300 }, + name: "菲奥奈", + time: 0, + wait: 2000, + sound: "", + text: "这句话显示在对话框内", + bodyList: [ + { name: "tati_050145a.webp", px: 100, filter: false }, + ], + }, + ]), + MotaActionBlocks["moveTextBox_s"].xmlText(), + MotaActionBlocks["clearTextBox_s"].xmlText(), + MotaActionBlocks["comment_s"].xmlText(), + MotaActionBlocks["autoText_s"].xmlText(), + MotaActionBlocks["scrollText_s"].xmlText(), + MotaActionBlocks["setText_s"].xmlText(), + MotaActionBlocks["tip_s"].xmlText(), + MotaActionBlocks["addPop_s"].xmlText(), + MotaActionBlocks["confirm_s"].xmlText(), + MotaActionBlocks["choices_s"].xmlText([ + "选择剑或者盾", + "流浪者", + "man", + 0, + "", + MotaActionBlocks["choicesContext"].xmlText([ + "剑", + "", + "", + null, + "", + "", + MotaActionFunctions.actionParser.parseList([ + { type: "openDoor", loc: [3, 3] }, + ]), + ]), + ]), + MotaActionBlocks["win_s"].xmlText(), + MotaActionBlocks["lose_s"].xmlText(), + MotaActionBlocks["restart_s"].xmlText(), + ], + 数据相关: [ + MotaActionBlocks["setValue_s"].xmlText([ + MotaActionBlocks["idIdList_e"].xmlText(["status", "生命"]), + "=", + "", + false, + ]), + MotaActionBlocks["setEnemy_s"].xmlText(), + MotaActionBlocks["setEnemyOnPoint_s"].xmlText(), + MotaActionBlocks["resetEnemyOnPoint_s"].xmlText(), + MotaActionBlocks["moveEnemyOnPoint_s"].xmlText(), + MotaActionBlocks["moveEnemyOnPoint_1_s"].xmlText(), + MotaActionBlocks["setEquip_s"].xmlText(), + MotaActionBlocks["setFloor_s"].xmlText(), + MotaActionBlocks["setGlobalAttribute_s"].xmlText(), + MotaActionBlocks["setGlobalValue_s"].xmlText(), + MotaActionBlocks["setGlobalFlag_s"].xmlText(), + MotaActionBlocks["setNameMap_s"].xmlText(), + MotaActionBlocks["input_s"].xmlText(), + MotaActionBlocks["input2_s"].xmlText(), + MotaActionBlocks["update_s"].xmlText(), + MotaActionBlocks["moveAction_s"].xmlText(), + MotaActionBlocks["changeFloor_s"].xmlText(), + MotaActionBlocks["changePos_s"].xmlText(), + MotaActionBlocks["battle_s"].xmlText(), + MotaActionBlocks["useItem_s"].xmlText(), + MotaActionBlocks["loadEquip_s"].xmlText(), + MotaActionBlocks["unloadEquip_s"].xmlText(), + MotaActionBlocks["openShop_s"].xmlText(), + MotaActionBlocks["disableShop_s"].xmlText(), + MotaActionBlocks["setHeroIcon_s"].xmlText(), + MotaActionBlocks["follow_s"].xmlText(), + MotaActionBlocks["unfollow_s"].xmlText(), + ], + 地图处理: [ + MotaActionBlocks["battle_1_s"].xmlText(), + MotaActionBlocks["openDoor_s"].xmlText(), + MotaActionBlocks["closeDoor_s"].xmlText(), + MotaActionBlocks["show_s"].xmlText(), + MotaActionBlocks["hide_s"].xmlText(), + MotaActionBlocks["setBlock_s"].xmlText(), + MotaActionBlocks["setBlockOpacity_s"].xmlText(), + MotaActionBlocks["setBlockFilter_s"].xmlText(), + MotaActionBlocks["turnBlock_s"].xmlText(), + MotaActionBlocks["moveHero_s"].xmlText(), + MotaActionBlocks["move_s"].xmlText(), + MotaActionBlocks["jumpHero_s"].xmlText(), + MotaActionBlocks["jumpHero_1_s"].xmlText(), + MotaActionBlocks["jump_s"].xmlText(), + MotaActionBlocks["jump_1_s"].xmlText(), + MotaActionBlocks["showBgFgMap_s"].xmlText(), + MotaActionBlocks["hideBgFgMap_s"].xmlText(), + MotaActionBlocks["setBgFgBlock_s"].xmlText(), + MotaActionBlocks["showFloorImg_s"].xmlText(), + MotaActionBlocks["hideFloorImg_s"].xmlText(), + ], + 事件控制: [ + MotaActionBlocks["if_1_s"].xmlText(), + MotaActionBlocks["if_s"].xmlText(), + MotaActionFunctions.actionParser.parseList({ + type: "switch", + condition: "判别值", + caseList: [ + { + action: [ + { type: "comment", text: "当判别值是值的场合执行此事件" }, + ], + }, + { + case: "default", + action: [ + { + type: "comment", + text: "当没有符合的值的场合执行default事件", + }, + ], + }, + ], + }), + MotaActionFunctions.actionParser.parseList({ + type: "for", + name: "temp:A", + from: "0", + to: "12", + step: "1", + data: [], + }), + MotaActionFunctions.actionParser.parseList({ + type: "forEach", + name: "temp:A", + list: ["status:atk", "status:def"], + data: [], + }), + MotaActionBlocks["while_s"].xmlText(), + MotaActionBlocks["dowhile_s"].xmlText(), + MotaActionBlocks["break_s"].xmlText(), + MotaActionBlocks["continue_s"].xmlText(), + MotaActionBlocks["exit_s"].xmlText(), + MotaActionBlocks["trigger_s"].xmlText(), + MotaActionBlocks["insert_1_s"].xmlText(), + MotaActionBlocks["insert_2_s"].xmlText(), + ], + 特效表现: [ + MotaActionBlocks["sleep_s"].xmlText(), + MotaActionBlocks["changebg_s"].xmlText(), + MotaActionFunctions.actionParser.parseList({ + type: "wait", + timeout: 0, + data: [ + { + case: "keyboard", + keycode: "13,32", + action: [ + { + type: "comment", + text: "当按下回车(keycode=13)或空格(keycode=32)时执行此事件\n超时剩余时间会写入flag:timeout", + }, + ], + }, + { + case: "mouse", + px: [0, 32], + py: [0, 32], + action: [ + { + type: "comment", + text: "当点击地图左上角时执行此事件\n超时剩余时间会写入flag:timeout", + }, + ], + }, + { + case: "condition", + condition: "flag:type==0\n&&flag:keycode==13", + action: [ + { + type: "comment", + text: "当满足自定义条件时会执行此事件\n超时剩余时间会写入flag:timeout", + }, + ], + }, + { + case: "timeout", + action: [ + { type: "comment", text: "当超时未操作时执行此事件" }, + ], + }, + ], + }), + MotaActionBlocks["waitAsync_s"].xmlText(), + MotaActionBlocks["stopAsync_s"].xmlText(), + MotaActionBlocks["op_s"].xmlText(), + MotaActionBlocks["drawWarning_s"].xmlText(), + MotaActionBlocks["changeMouse_s"].xmlText(), + MotaActionBlocks["removeMouse_s"].xmlText(), + MotaActionBlocks["vibrate_s"].xmlText(), + MotaActionBlocks["setanimate_s"].xmlText(), + MotaActionBlocks["deleteanimate_s"].xmlText(), + MotaActionBlocks["playanimate_s"].xmlText(), + MotaActionBlocks["clearanimate_s"].xmlText(), + MotaActionBlocks["animate_s"].xmlText(), + MotaActionBlocks["animate_1_s"].xmlText(), + MotaActionBlocks["stopAnimate_s"].xmlText(), + MotaActionBlocks["setViewport_s"].xmlText(), + MotaActionBlocks["setViewport_1_s"].xmlText(), + MotaActionBlocks["lockViewport_s"].xmlText(), + MotaActionBlocks["showStatusBar_s"].xmlText(), + MotaActionBlocks["hideStatusBar_s"].xmlText(), + MotaActionBlocks["setHeroOpacity_s"].xmlText(), + MotaActionBlocks["setCurtain_0_s"].xmlText(), + MotaActionBlocks["setCurtain_1_s"].xmlText(), + MotaActionBlocks["screenFlash_s"].xmlText(), + MotaActionBlocks["setWeather_s"].xmlText(), + MotaActionBlocks["callBook_s"].xmlText(), + MotaActionBlocks["callSave_s"].xmlText(), + MotaActionBlocks["autoSave_s"].xmlText(), + MotaActionBlocks["forbidSave_s"].xmlText(), + MotaActionBlocks["callLoad_s"].xmlText(), + ], + 音像处理: [ + MotaActionBlocks["animationDrawable_s"].xmlText(), + MotaActionBlocks["setanimate_s"].xmlText(), + MotaActionBlocks["deleteanimate_s"].xmlText(), + MotaActionBlocks["playanimate_s"].xmlText(), + MotaActionBlocks["clearanimate_s"].xmlText(), + MotaActionBlocks["showImage_s"].xmlText(), + MotaActionBlocks["showImage_1_s"].xmlText(), + MotaActionBlocks["hideImage_s"].xmlText(), + MotaActionBlocks["showTextImage_s"].xmlText(), + MotaActionBlocks["moveImage_s"].xmlText(), + MotaActionBlocks["rotateImage_s"].xmlText(), + MotaActionBlocks["scaleImage_s"].xmlText(), + MotaActionBlocks["showGif_s"].xmlText(), + MotaActionBlocks["playBgm_s"].xmlText(), + MotaActionBlocks["playStereo_s"].xmlText(), + MotaActionBlocks["moveStereo_s"].xmlText(), + MotaActionBlocks["pauseBgm_s"].xmlText(), + MotaActionBlocks["resumeBgm_s"].xmlText(), + MotaActionBlocks["loadBgm_s"].xmlText(), + MotaActionBlocks["freeBgm_s"].xmlText(), + MotaActionBlocks["playSound_s"].xmlText(), + MotaActionBlocks["playSound_1_s"].xmlText(), + MotaActionBlocks["stopSound_s"].xmlText(), + MotaActionBlocks["setVolume_s"].xmlText(), + MotaActionBlocks["setBgmSpeed_s"].xmlText(), + ], + UI绘制: [ + MotaActionBlocks["previewUI_s"].xmlText(), + MotaActionBlocks["clearMap_s"].xmlText(), + MotaActionBlocks["setAttribute_s"].xmlText(), + MotaActionBlocks["setFilter_s"].xmlText(), + MotaActionBlocks["fillText_s"].xmlText(), + MotaActionBlocks["fillBoldText_s"].xmlText(), + MotaActionBlocks["drawTextContent_s"].xmlText(), + MotaActionBlocks["fillRect_s"].xmlText(), + MotaActionBlocks["strokeRect_s"].xmlText(), + MotaActionBlocks["drawLine_s"].xmlText(), + MotaActionBlocks["drawArrow_s"].xmlText(), + MotaActionBlocks["fillPolygon_s"].xmlText(), + MotaActionBlocks["strokePolygon_s"].xmlText(), + MotaActionBlocks["fillEllipse_s"].xmlText(), + MotaActionBlocks["strokeEllipse_s"].xmlText(), + MotaActionBlocks["fillArc_s"].xmlText(), + MotaActionBlocks["strokeArc_s"].xmlText(), + MotaActionBlocks["drawImage_s"].xmlText(), + MotaActionBlocks["drawImage_1_s"].xmlText(), + MotaActionBlocks["drawIcon_s"].xmlText(), + MotaActionBlocks["drawBackground_s"].xmlText(), + MotaActionBlocks["drawSelector_s"].xmlText(), + MotaActionBlocks["drawSelector_1_s"].xmlText(), + ], + 原生脚本: [ + MotaActionBlocks["function_s"].xmlText(), + MotaActionBlocks["unknown_s"].xmlText(), + ], + 值块: [ + MotaActionBlocks["setValue_s"].xmlText([ + MotaActionBlocks["idIdList_e"].xmlText(["status", "生命"]), + "=", + "", + false, + ]), + MotaActionBlocks["expression_arithmetic_0"].xmlText(), + MotaActionBlocks["idFlag_e"].xmlText(), + MotaActionBlocks["idTemp_e"].xmlText(), + MotaActionBlocks["negate_e"].xmlText(), + MotaActionBlocks["unaryOperation_e"].xmlText(), + MotaActionBlocks["bool_e"].xmlText(), + MotaActionBlocks["idString_e"].xmlText(), + MotaActionBlocks["idIdList_e"].xmlText(), + MotaActionBlocks["idFixedList_e"].xmlText(), + MotaActionBlocks["enemyattr_e"].xmlText(), + MotaActionBlocks["blockId_e"].xmlText(), + MotaActionBlocks["blockNumber_e"].xmlText(), + MotaActionBlocks["blockCls_e"].xmlText(), + MotaActionBlocks["hasEquip_e"].xmlText(), + MotaActionBlocks["equip_e"].xmlText(), + MotaActionBlocks["nextXY_e"].xmlText(), + MotaActionBlocks["isReplaying_e"].xmlText(), + MotaActionBlocks["hasVisitedFloor_e"].xmlText(), + MotaActionBlocks["isShopVisited_e"].xmlText(), + MotaActionBlocks["canBattle_e"].xmlText(), + MotaActionBlocks["damage_e"].xmlText(), + MotaActionBlocks["damage_1_e"].xmlText(), + MotaActionBlocks["rand_e"].xmlText(), + MotaActionBlocks["evalString_e"].xmlText(), + ], + 常见事件模板: [ + '', + ], + 最近使用事件: [ + '', + ], + }; + var toolboxgap = ''; + //xml_text = MotaActionFunctions.actionParser.parse(obj,type||'event') + //MotaActionBlocks['idString_e'].xmlText() - //#region 動態常見事件模板 - let CommonEventTemplateHTML = []; + //#region 動態常見事件模板 + let CommonEventTemplateHTML = []; - for (let commonEventName in events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate) { - if ( - events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate.hasOwnProperty( - commonEventName - ) - ) { - let actionParserJson = Array.from( - events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate[ - commonEventName - ] ?? [] - ); + for (let commonEventName in events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate) { + if ( + events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate.hasOwnProperty( + commonEventName + ) + ) { + let actionParserJson = Array.from( + events_c12a15a8_c380_4b28_8144_256cba95f760.CommonEventTemplate[ + commonEventName + ] ?? [] + ); - let labelHTML = ""; - let blockHTML = ""; + let labelHTML = ""; + let blockHTML = ""; - labelHTML = ``; + labelHTML = ``; - if (actionParserJson.length > 1) { - actionParserJson = { - type: "if", - condition: "true", - true: actionParserJson, - }; - } else if (actionParserJson.length < 1) { - actionParserJson = [ - "空的常用事件模板。\n請在主頁下拉菜單中,選擇常用事件模板,進行編輯。\n編輯後需按F5刷新事件編輯器。", - ]; - } - blockHTML = - MotaActionFunctions.actionParser.parseList(actionParserJson); + if (actionParserJson.length > 1) { + actionParserJson = { + type: "if", + condition: "true", + true: actionParserJson, + }; + } else if (actionParserJson.length < 1) { + actionParserJson = [ + "空的常用事件模板。\n請在主頁下拉菜單中,選擇常用事件模板,進行編輯。\n編輯後需按F5刷新事件編輯器。", + ]; + } + blockHTML = + MotaActionFunctions.actionParser.parseList(actionParserJson); - CommonEventTemplateHTML.push(labelHTML); - CommonEventTemplateHTML.push(blockHTML); - } - } + CommonEventTemplateHTML.push(labelHTML); + CommonEventTemplateHTML.push(blockHTML); + } + } - toolboxObj["常见事件模板"] = CommonEventTemplateHTML; - //#endregion + toolboxObj["常见事件模板"] = CommonEventTemplateHTML; + //#endregion - for (var name in toolboxObj) { - var custom = null; - if (name == "最近使用事件") custom = "searchBlockCategory"; - if (name == "入口方块") custom = "entranceCategory"; - getCategory(name, custom).innerHTML = - toolboxObj[name].join(toolboxgap); - } + for (var name in toolboxObj) { + var custom = null; + if (name == "最近使用事件") custom = "searchBlockCategory"; + if (name == "入口方块") custom = "entranceCategory"; + getCategory(name, custom).innerHTML = + toolboxObj[name].join(toolboxgap); + } - var blocklyArea = document.getElementById("blocklyArea"); - var blocklyDiv = document.getElementById("blocklyDiv"); - var workspace = Blockly.inject(blocklyDiv, { - media: "_server/blockly/media/", - toolbox: document.getElementById("toolbox"), - zoom: { - controls: true, - wheel: false, //滚轮改为上下(shift:左右)翻滚 - startScale: 1.0, - maxScale: 3, - minScale: 0.3, - scaleSpeed: 1.08, - }, - trashcan: false, - }); + var blocklyArea = document.getElementById("blocklyArea"); + var blocklyDiv = document.getElementById("blocklyDiv"); + var workspace = Blockly.inject(blocklyDiv, { + media: "_server/blockly/media/", + toolbox: document.getElementById("toolbox"), + zoom: { + controls: true, + wheel: false, //滚轮改为上下(shift:左右)翻滚 + startScale: 1.0, + maxScale: 3, + minScale: 0.3, + scaleSpeed: 1.08, + }, + trashcan: false, + }); - editor_blockly.isCommonEntry = function () { - var commonEntries = [ - "beforeBattle", - "afterBattle", - "afterOpenDoor", - "firstArrive", - "eachArrive", - "commonEvent", - "item", - ]; - return commonEntries.indexOf(editor_blockly.entryType) >= 0; - }; + editor_blockly.isCommonEntry = function () { + var commonEntries = [ + "beforeBattle", + "afterBattle", + "afterOpenDoor", + "firstArrive", + "eachArrive", + "commonEvent", + "item", + ]; + return commonEntries.indexOf(editor_blockly.entryType) >= 0; + }; - editor_blockly.entranceCategoryCallback = function (workspace) { - var list = toolboxObj["入口方块"]; - var xmlList = []; - var eventType = - (editor_blockly.isCommonEntry() ? - "common" : - editor_blockly.entryType) + "_m"; - for (var ii = 0, blockText; - (blockText = list[ii]); ii++) { - if ( - new RegExp('').exec(blockText) - ) { - var block = Blockly.Xml.textToDom( - "" + blockText + "" - ).firstChild; - block.setAttribute("gap", 5); - xmlList.push(block); - } - } - return xmlList; - }; + editor_blockly.entranceCategoryCallback = function (workspace) { + var list = toolboxObj["入口方块"]; + var xmlList = []; + var eventType = + (editor_blockly.isCommonEntry() + ? "common" + : editor_blockly.entryType) + "_m"; + for (var ii = 0, blockText; (blockText = list[ii]); ii++) { + if ( + new RegExp('').exec(blockText) + ) { + var block = Blockly.Xml.textToDom( + "" + blockText + "" + ).firstChild; + block.setAttribute("gap", 5); + xmlList.push(block); + } + } + return xmlList; + }; - workspace.registerToolboxCategoryCallback( - "entranceCategory", - editor_blockly.entranceCategoryCallback - ); + workspace.registerToolboxCategoryCallback( + "entranceCategory", + editor_blockly.entranceCategoryCallback + ); - editor_blockly.searchBlockCategoryCallback = function (workspace) { - var xmlList = []; - var labels = editor_blockly.searchBlock(); - for (var i = 0; i < labels.length; i++) { - var blockText = - "" + MotaActionBlocks[labels[i]].xmlText() + ""; - var block = Blockly.Xml.textToDom(blockText).firstChild; - block.setAttribute("gap", 5); - xmlList.push(block); - } - return xmlList; - }; + editor_blockly.searchBlockCategoryCallback = function (workspace) { + var xmlList = []; + var labels = editor_blockly.searchBlock(); + for (var i = 0; i < labels.length; i++) { + var blockText = + "" + MotaActionBlocks[labels[i]].xmlText() + ""; + var block = Blockly.Xml.textToDom(blockText).firstChild; + block.setAttribute("gap", 5); + xmlList.push(block); + } + return xmlList; + }; - workspace.registerToolboxCategoryCallback( - "searchBlockCategory", - editor_blockly.searchBlockCategoryCallback - ); + workspace.registerToolboxCategoryCallback( + "searchBlockCategory", + editor_blockly.searchBlockCategoryCallback + ); - var onresize = function (e) { - blocklyDiv.style.width = blocklyArea.offsetWidth + "px"; - blocklyDiv.style.height = blocklyArea.offsetHeight + "px"; - Blockly.svgResize(workspace); - }; - if (typeof editor !== "undefined" && !editor.isMobile) - window.addEventListener("resize", onresize, false); - onresize(); - //Blockly.svgResize(workspace); + var onresize = function (e) { + blocklyDiv.style.width = blocklyArea.offsetWidth + "px"; + blocklyDiv.style.height = blocklyArea.offsetHeight + "px"; + Blockly.svgResize(workspace); + }; + if (typeof editor !== "undefined" && !editor.isMobile) + window.addEventListener("resize", onresize, false); + onresize(); + //Blockly.svgResize(workspace); - //Blockly.bindEventWithChecks_(workspace.svgGroup_,"wheel",workspace,function(e){}); - document.getElementById("blocklyDiv").onmousewheel = function (e) { - //console.log(e); - e.preventDefault(); - var hvScroll = e.shiftKey ? "hScroll" : "vScroll"; - var mousewheelOffsetValue = - (20 / 380) * workspace.scrollbar[hvScroll].handleLength_ * 3; - workspace.scrollbar[hvScroll].handlePosition_ += - (e.deltaY || 0) + (e.detail || 0) > 0 ? - mousewheelOffsetValue : - -mousewheelOffsetValue; - workspace.scrollbar[hvScroll].onScroll_(); - // workspace.setScale(workspace.scale); - }; + //Blockly.bindEventWithChecks_(workspace.svgGroup_,"wheel",workspace,function(e){}); + document.getElementById("blocklyDiv").onmousewheel = function (e) { + //console.log(e); + e.preventDefault(); + var hvScroll = e.shiftKey ? "hScroll" : "vScroll"; + var mousewheelOffsetValue = + (20 / 380) * workspace.scrollbar[hvScroll].handleLength_ * 3; + workspace.scrollbar[hvScroll].handlePosition_ += + (e.deltaY || 0) + (e.detail || 0) > 0 + ? mousewheelOffsetValue + : -mousewheelOffsetValue; + workspace.scrollbar[hvScroll].onScroll_(); + // workspace.setScale(workspace.scale); + }; - var doubleClickCheck = [ - [0, "abc"] - ]; + var doubleClickCheck = [[0, "abc"]]; - function omitedcheckUpdateFunction(event) { - if (event.type === "create") { - editor_blockly.addIntoLastUsedType(event.blockId); - } - if (event.type === "ui" && event.element == "click") { - var newClick = [new Date().getTime(), event.blockId]; - var lastClick = doubleClickCheck.shift(); - doubleClickCheck.push(newClick); - if (newClick[0] - lastClick[0] < 500) { - if (newClick[1] === lastClick[1]) { - editor_blockly.doubleClickBlock(newClick[1]); - } - } - } - // Only handle these events - if (["create", "move", "change", "delete"].indexOf(event.type) < 0) - return; - if (editor_blockly.workspace.topBlocks_.length >= 2) { - editor_blockly.setValue("入口方块只能有一个"); - return; - } - var eventType = editor_blockly.entryType; - if (editor_blockly.workspace.topBlocks_.length == 1) { - var blockType = editor_blockly.workspace.topBlocks_[0].type; - if ( - blockType !== eventType + "_m" && - !(editor_blockly.isCommonEntry() && blockType == "common_m") - ) { - editor_blockly.setValue("入口方块类型错误"); - return; - } - } - try { - var code = Blockly.JavaScript.workspaceToCode(workspace).replace( - /\\(i|c|d|e|g|z)/g, - "\\\\$1" - ); - editor_blockly.setValue(code); - } catch (error) { - editor_blockly.setValue(String(error)); - if (error instanceof OmitedError) { - var blockName = error.blockName; - var varName = error.varName; - var block = error.block; - } - // console.log(error); - } - } + function omitedcheckUpdateFunction(event) { + if (event.type === "create") { + editor_blockly.addIntoLastUsedType(event.blockId); + } + if (event.type === "ui" && event.element == "click") { + var newClick = [new Date().getTime(), event.blockId]; + var lastClick = doubleClickCheck.shift(); + doubleClickCheck.push(newClick); + if (newClick[0] - lastClick[0] < 500) { + if (newClick[1] === lastClick[1]) { + editor_blockly.doubleClickBlock(newClick[1]); + } + } + } + // Only handle these events + if (["create", "move", "change", "delete"].indexOf(event.type) < 0) + return; + if (editor_blockly.workspace.topBlocks_.length >= 2) { + editor_blockly.setValue("入口方块只能有一个"); + return; + } + var eventType = editor_blockly.entryType; + if (editor_blockly.workspace.topBlocks_.length == 1) { + var blockType = editor_blockly.workspace.topBlocks_[0].type; + if ( + blockType !== eventType + "_m" && + !(editor_blockly.isCommonEntry() && blockType == "common_m") + ) { + editor_blockly.setValue("入口方块类型错误"); + return; + } + } + try { + var code = Blockly.JavaScript.workspaceToCode(workspace).replace( + /\\(i|c|d|e|g|z)/g, + "\\\\$1" + ); + editor_blockly.setValue(code); + } catch (error) { + editor_blockly.setValue(String(error)); + if (error instanceof OmitedError) { + var blockName = error.blockName; + var varName = error.varName; + var block = error.block; + } + // console.log(error); + } + } - workspace.addChangeListener(omitedcheckUpdateFunction); + workspace.addChangeListener(omitedcheckUpdateFunction); - workspace.addChangeListener(Blockly.Events.disableOrphans); + workspace.addChangeListener(Blockly.Events.disableOrphans); - editor_blockly.workspace = workspace; + editor_blockly.workspace = workspace; - MotaActionFunctions.workspace = function () { - return editor_blockly.workspace; - }; + MotaActionFunctions.workspace = function () { + return editor_blockly.workspace; + }; - // 因为在editor_blockly.parse里已经HTML转义过一次了,所以这里要覆盖掉以避免在注释中出现<等 - MotaActionFunctions.xmlText = function ( - ruleName, - inputs, - isShadow, - comment, - collapsed, - disabled - ) { - var rule = MotaActionBlocks[ruleName]; - var blocktext = isShadow ? "shadow" : "block"; - var xmlText = []; - xmlText.push( - "<" + - blocktext + - ' type="' + - ruleName + - '"' + - (collapsed ? ' collapsed="true"' : "") + - (disabled ? ' disabled="true"' : "") + - ">" - ); - if (!inputs) inputs = []; - for (var ii = 0, inputType; - (inputType = rule.argsType[ii]); ii++) { - var input = inputs[ii]; - var _input = ""; - var noinput = input === null || input === undefined; - if ( - noinput && - inputType === "field" && - MotaActionBlocks[rule.argsGrammarName[ii]].type !== - "field_dropdown" - ) - continue; - if (noinput && inputType === "field") { - noinput = false; - input = rule.fieldDefault(rule.args[ii]); - } - if (noinput) input = ""; - if ( - inputType === "field" && - MotaActionBlocks[rule.argsGrammarName[ii]].type === - "field_checkbox" - ) - input = input ? "TRUE" : "FALSE"; - if (inputType !== "field") { - var subList = false; - var subrulename = rule.argsGrammarName[ii]; - var subrule = MotaActionBlocks[subrulename]; - if (subrule instanceof Array) { - subrulename = subrule[subrule.length - 1]; - subrule = MotaActionBlocks[subrulename]; - subList = true; - } - _input = subrule.xmlText([], true); - if (noinput && !subList && !isShadow) { - //无输入的默认行为是: 如果语句块的备选方块只有一个,直接代入方块 - input = subrule.xmlText(); - } - } - xmlText.push("<" + inputType + ' name="' + rule.args[ii] + '">'); - xmlText.push(_input + input); - xmlText.push(""); - } - if (comment) { - xmlText.push(""); - xmlText.push(comment); - xmlText.push(""); - } - var next = inputs[rule.args.length]; - if (next) { - //next - xmlText.push(""); - xmlText.push(next); - xmlText.push(""); - } - xmlText.push(""); - return xmlText.join(""); - }; - })(); + // 因为在editor_blockly.parse里已经HTML转义过一次了,所以这里要覆盖掉以避免在注释中出现<等 + MotaActionFunctions.xmlText = function ( + ruleName, + inputs, + isShadow, + comment, + collapsed, + disabled + ) { + var rule = MotaActionBlocks[ruleName]; + var blocktext = isShadow ? "shadow" : "block"; + var xmlText = []; + xmlText.push( + "<" + + blocktext + + ' type="' + + ruleName + + '"' + + (collapsed ? ' collapsed="true"' : "") + + (disabled ? ' disabled="true"' : "") + + ">" + ); + if (!inputs) inputs = []; + for (var ii = 0, inputType; (inputType = rule.argsType[ii]); ii++) { + var input = inputs[ii]; + var _input = ""; + var noinput = input === null || input === undefined; + if ( + noinput && + inputType === "field" && + MotaActionBlocks[rule.argsGrammarName[ii]].type !== + "field_dropdown" + ) + continue; + if (noinput && inputType === "field") { + noinput = false; + input = rule.fieldDefault(rule.args[ii]); + } + if (noinput) input = ""; + if ( + inputType === "field" && + MotaActionBlocks[rule.argsGrammarName[ii]].type === + "field_checkbox" + ) + input = input ? "TRUE" : "FALSE"; + if (inputType !== "field") { + var subList = false; + var subrulename = rule.argsGrammarName[ii]; + var subrule = MotaActionBlocks[subrulename]; + if (subrule instanceof Array) { + subrulename = subrule[subrule.length - 1]; + subrule = MotaActionBlocks[subrulename]; + subList = true; + } + _input = subrule.xmlText([], true); + if (noinput && !subList && !isShadow) { + //无输入的默认行为是: 如果语句块的备选方块只有一个,直接代入方块 + input = subrule.xmlText(); + } + } + xmlText.push("<" + inputType + ' name="' + rule.args[ii] + '">'); + xmlText.push(_input + input); + xmlText.push(""); + } + if (comment) { + xmlText.push(""); + xmlText.push(comment); + xmlText.push(""); + } + var next = inputs[rule.args.length]; + if (next) { + //next + xmlText.push(""); + xmlText.push(next); + xmlText.push(""); + } + xmlText.push(""); + return xmlText.join(""); + }; + })(); - // end mark sfergsvae - } - .toString() - .split("// start mark sfergsvae")[1] - .split("// end mark sfergsvae")[0]; - } -}, - "夹击激光动画": function () { + // end mark sfergsvae + } + .toString() + .split("// start mark sfergsvae")[1] + .split("// end mark sfergsvae")[0]; + } + }, + 夹击激光动画: function () { function createCanvas(name, zIndex) { if (!name) return; var canvas = document.createElement("canvas"); @@ -10127,83 +10216,83 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } }; }, - "瞬移轨迹": function () { - // 在此增加新插件 - function popMove() { - var ctx = core.getContextByName("popMove"); - if (!ctx) - ctx = core.createCanvas( - "popMove", - 0, - 0, - core.__PIXELS__, - core.__PIXELS__, - 71 - ); - ctx.canvas.classList.add('gameCanvas', 'anti-aliasing') - core.clearMap(ctx); - if (core.status.replay.speed <= 3 && !flags.stopPop) { - var list = core.status.popMove || []; - var count = 0; - list.forEach(function (one) { - // 由frame计算出dy + 瞬移轨迹: function () { + // 在此增加新插件 + function popMove() { + var ctx = core.getContextByName("popMove"); + if (!ctx) + ctx = core.createCanvas( + "popMove", + 0, + 0, + core.__PIXELS__, + core.__PIXELS__, + 71 + ); + ctx.canvas.classList.add("gameCanvas", "anti-aliasing"); + core.clearMap(ctx); + if (core.status.replay.speed <= 3 && !flags.stopPop) { + var list = core.status.popMove || []; + var count = 0; + list.forEach(function (one) { + // 由frame计算出dy - one.frame++; - // 绘制 + one.frame++; + // 绘制 - if (one.frame >= 0) core.setAlpha(ctx, 1 - one.frame / 30); - else core.setAlpha(ctx, 1); + if (one.frame >= 0) core.setAlpha(ctx, 1 - one.frame / 30); + else core.setAlpha(ctx, 1); - var length = Math.sqrt( - Math.pow(one.px2 - one.px, 2) + Math.pow(one.py2 - one.py, 2) - ); - //console.log(length) - var li = length / 16; - var lx = (one.px2 - one.px) / li; - var ly = (one.py2 - one.py) / li; - for (var i = 0; i < li; i += 1) { - core.setAlpha(ctx, (1 - one.frame / 30) * ((i / li) * 0.8 + 0.2)); - core.drawLine( - "popMove", - one.px + i * lx, - one.py + i * ly, - one.px + (i + 0.5) * lx, - one.py + (i + 0.5) * ly, - "#E1E1E1", - 6 - ); - if (i == 0) - core.strokeCircle("popMove", one.px, one.py, 6, "#E1E1E1", 3); - } - core.strokeCircle("popMove", one.px2, one.py2, 6, "#E1E1E1", 3); - core.strokeCircle( - "popMove", - one.px2, - one.py2, - 6 + (16 * one.frame) / 30, - "#E1E1E1", - 6 * (1 - one.frame / 30) - ); - //core.drawLine('popMove', one.px, one.py, one.px2, one.py2, '#E1E1E1', 6); + var length = Math.sqrt( + Math.pow(one.px2 - one.px, 2) + Math.pow(one.py2 - one.py, 2) + ); + //console.log(length) + var li = length / 16; + var lx = (one.px2 - one.px) / li; + var ly = (one.py2 - one.py) / li; + for (var i = 0; i < li; i += 1) { + core.setAlpha(ctx, (1 - one.frame / 30) * ((i / li) * 0.8 + 0.2)); + core.drawLine( + "popMove", + one.px + i * lx, + one.py + i * ly, + one.px + (i + 0.5) * lx, + one.py + (i + 0.5) * ly, + "#E1E1E1", + 6 + ); + if (i == 0) + core.strokeCircle("popMove", one.px, one.py, 6, "#E1E1E1", 3); + } + core.strokeCircle("popMove", one.px2, one.py2, 6, "#E1E1E1", 3); + core.strokeCircle( + "popMove", + one.px2, + one.py2, + 6 + (16 * one.frame) / 30, + "#E1E1E1", + 6 * (1 - one.frame / 30) + ); + //core.drawLine('popMove', one.px, one.py, one.px2, one.py2, '#E1E1E1', 6); - if (one.frame >= 30) count++; - }); - if (count > 0) list.splice(0, count); - } - } + if (one.frame >= 30) count++; + }); + if (count > 0) list.splice(0, count); + } + } - if (!main.replayChecking) { - core.registerAnimationFrame("popMove", true, popMove); - } - this.addPopMove = function (px, py, px2, py2, frame) { - var data = { px: px, py: py, px2: px2, py2: py2, frame: frame || 0 }; - if (core.status.replay.speed <= 3) { - if (!core.status.popMove) core.status.popMove = [data]; - else core.status.popMove.push(data); - } - }; -}, - "墓碑(编辑器)": function () { + if (!main.replayChecking) { + core.registerAnimationFrame("popMove", true, popMove); + } + this.addPopMove = function (px, py, px2, py2, frame) { + var data = { px: px, py: py, px2: px2, py2: py2, frame: frame || 0 }; + if (core.status.replay.speed <= 3) { + if (!core.status.popMove) core.status.popMove = [data]; + else core.status.popMove.push(data); + } + }; + }, + "墓碑(编辑器)": function () { // 在此增加新插件 if (main.mode != "editor") return; // 编辑器模式下使用 var mapData = null; @@ -10274,426 +10363,426 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = core.setAlpha("event2", alpha); }; }, - "小地图": function () { - // 在此增加新插件 - // ----- 不可自定义 杂七杂八的变量 - /** @type {{[x: string]: BFSResult}} */ - let mapCache = {}; // 地图缓存 - let drawCache = {}; // 绘制信息缓存 - let status = "none"; // 当前的绘制状态 - /** @type {{[x: string]: Sprite}} */ - let sprites = {}; // 当前所有的sprite - /** @type {{[x: string]: Sprite}} */ - let canDrag = {}; // 可以拖拽的sprite - /** @type {{[x: string]: Button}} */ - let areaSprite = {}; // 区域列表对应的sprite - let clicking = false; // 是否正在点击,用于拖拽判定 - let drawingMap = ""; // 正在绘制的中心楼层 - let nowScale = 0; // 当前绘制的放缩比例 - let lastTouch = {}; // 上一次的单点点击信息 - let lastLength = 0; // 手机端缩放时上一次的两指间距离 - let nowDepth = 0; // 当前的遍历深度 - let drawedThumbnail = {}; // 已经绘制过的缩略图 - let moved = false; // 鼠标按下后是否移动了 - let noBorder = false; // 是否是无边框拼接模式 - let lastScale = 0; // 上一次缩放,用于优化缩略图绘制 - let areaPage = 0; // 区域显示的当前页数 - let nowArea = 0; // 当前区域index - let selecting = ""; // 选择时当前正在选择的地图 + 小地图: function () { + // 在此增加新插件 + // ----- 不可自定义 杂七杂八的变量 + /** @type {{[x: string]: BFSResult}} */ + let mapCache = {}; // 地图缓存 + let drawCache = {}; // 绘制信息缓存 + let status = "none"; // 当前的绘制状态 + /** @type {{[x: string]: Sprite}} */ + let sprites = {}; // 当前所有的sprite + /** @type {{[x: string]: Sprite}} */ + let canDrag = {}; // 可以拖拽的sprite + /** @type {{[x: string]: Button}} */ + let areaSprite = {}; // 区域列表对应的sprite + let clicking = false; // 是否正在点击,用于拖拽判定 + let drawingMap = ""; // 正在绘制的中心楼层 + let nowScale = 0; // 当前绘制的放缩比例 + let lastTouch = {}; // 上一次的单点点击信息 + let lastLength = 0; // 手机端缩放时上一次的两指间距离 + let nowDepth = 0; // 当前的遍历深度 + let drawedThumbnail = {}; // 已经绘制过的缩略图 + let moved = false; // 鼠标按下后是否移动了 + let noBorder = false; // 是否是无边框拼接模式 + let lastScale = 0; // 上一次缩放,用于优化缩略图绘制 + let areaPage = 0; // 区域显示的当前页数 + let nowArea = 0; // 当前区域index + let selecting = ""; // 选择时当前正在选择的地图 - // ---- 不可自定义,常量 - /** @type {Area} */ - let areas = []; // 区域信息 - const perPage = Math.floor((core._PY_ - 60) / 30); // 区域的每页显示数量 + // ---- 不可自定义,常量 + /** @type {Area} */ + let areas = []; // 区域信息 + const perPage = Math.floor((core._PY_ - 60) / 30); // 区域的每页显示数量 - // ---- 可自定义,默认的切换地图的图块id - const defaultChange = { - left: "leftPortal", // 左箭头 - up: "upPortal", // 上箭头 - right: "rightPortal", // 右箭头 - down: "downPortal", // 下箭头 - upFloor: "upFloor", // 上楼 - downFloor: "downFloor", // 下楼 - }; - // ---- 可自定义,默认数值 - const defaultValue = { - font: "Verdana", // 默认字体 - scale: 60, // 默认地图缩放比例 - depth: Infinity, // 默认的遍历深度 - }; + // ---- 可自定义,默认的切换地图的图块id + const defaultChange = { + left: "leftPortal", // 左箭头 + up: "upPortal", // 上箭头 + right: "rightPortal", // 右箭头 + down: "downPortal", // 下箭头 + upFloor: "upFloor", // 上楼 + downFloor: "downFloor", // 下楼 + }; + // ---- 可自定义,默认数值 + const defaultValue = { + font: "Verdana", // 默认字体 + scale: 60, // 默认地图缩放比例 + depth: Infinity, // 默认的遍历深度 + }; - // ---- 不可自定义,计算数据 - const dirData = { - up: [1, 0], - down: [-1, 0], - left: [0, 1], - right: [0, -1], - upFloor: [0, 0], - downFloor: [0, 0], - }; - let ignoreEnemies = (this.ignoreEnemies = []); + // ---- 不可自定义,计算数据 + const dirData = { + up: [1, 0], + down: [-1, 0], + left: [0, 1], + right: [0, -1], + upFloor: [0, 0], + downFloor: [0, 0], + }; + let ignoreEnemies = (this.ignoreEnemies = []); - let allChangeEntries = Object.entries(defaultChange); + let allChangeEntries = Object.entries(defaultChange); - this.setq = function (floorId) { - core.setFlag("任务地点", floorId) - } + this.setq = function (floorId) { + core.setFlag("任务地点", floorId); + }; - const reset = core.events.resetGame; - this.bfs = function () { - areas = []; - // 获取所有分区,使用异步函数,保证不会卡顿 - // 原理是用bfs扫,将所有连在一起的地图合并成一个区域 - (async function () { - let all = core.floorIds.slice(); - const scanned = { - [all[0]]: true, - }; - while (all.length > 0) { - let now = all.shift(); - if (core.status.maps[now].deleted) continue; - if (!now) return; - await new Promise((res) => { - const result = core.plugin.bfsSearch(now, Infinity, true); - mapCache[`${now}_Infinity_false`] = result; - areas.push({ name: core.floors[now].areas, maps: result.order }); - for (const map of result.order) { - scanned[map] = true; - all = all.filter((v) => !result.order.includes(v)); - } - res("success"); - }).then(() => { - core.setFlag("areas", areas); - }); - } - })(); - }; - core.events.resetGame = function () { - reset.apply(core.events, arguments); - core.plugin.bfs(); - }; - /** - * 广度优先搜索搜索地图路径 - * @param {string} center 中心地图的id - * @param {number} depth 搜索深度 - * @param {boolean} noCache 是否不使用缓存 - * @returns {BFSResult} 格式:floorId_x_y_dir: floorId_x_y - */ - this.bfsSearch = function bfsSearch(center, depth, noCache) { - // 检查缓存 - const id = `${center}_${depth}_${noBorder}`; - if (mapCache[id] && !noCache) return mapCache[id]; - const used = { - [center]: true, - }; // 搜索过的楼层 - let queue = []; - let stack = [center]; // 当前栈 - let nowDepth = -1; - const mapOrder = [center]; // 遍历顺序,顺便还能记录遍历了哪些楼层 + const reset = core.events.resetGame; + this.bfs = function () { + areas = []; + // 获取所有分区,使用异步函数,保证不会卡顿 + // 原理是用bfs扫,将所有连在一起的地图合并成一个区域 + (async function () { + let all = core.floorIds.slice(); + const scanned = { + [all[0]]: true, + }; + while (all.length > 0) { + let now = all.shift(); + if (core.status.maps[now].deleted) continue; + if (!now) return; + await new Promise((res) => { + const result = core.plugin.bfsSearch(now, Infinity, true); + mapCache[`${now}_Infinity_false`] = result; + areas.push({ name: core.floors[now].areas, maps: result.order }); + for (const map of result.order) { + scanned[map] = true; + all = all.filter((v) => !result.order.includes(v)); + } + res("success"); + }).then(() => { + core.setFlag("areas", areas); + }); + } + })(); + }; + core.events.resetGame = function () { + reset.apply(core.events, arguments); + core.plugin.bfs(); + }; + /** + * 广度优先搜索搜索地图路径 + * @param {string} center 中心地图的id + * @param {number} depth 搜索深度 + * @param {boolean} noCache 是否不使用缓存 + * @returns {BFSResult} 格式:floorId_x_y_dir: floorId_x_y + */ + this.bfsSearch = function bfsSearch(center, depth, noCache) { + // 检查缓存 + const id = `${center}_${depth}_${noBorder}`; + if (mapCache[id] && !noCache) return mapCache[id]; + const used = { + [center]: true, + }; // 搜索过的楼层 + let queue = []; + let stack = [center]; // 当前栈 + let nowDepth = -1; + const mapOrder = [center]; // 遍历顺序,顺便还能记录遍历了哪些楼层 - const res = {}; // 输出结果,格式:floorId_x_y_dir: floorId_x_y - const enemies = {}; - const upOrDown = {}; - const mapdir = {}; - // 开始循环搜索 - while (nowDepth < depth && stack.length > 0) { - const now = stack.shift(); // 当前id - if (core.status.maps[now].deleted) continue; - mapdir[now] = mapdir[now] ?? []; - const blocks = core.getMapBlocksObj(now); // 获取当前地图的每点的事件 - enemies[now] = {}; - // 遍历,获取可以传送的点,只检测绿点事件,因此可用红点事件进行传送来实现分区功能 - for (const i in blocks) { - const block = blocks[i]; - // 整合漏怪检测,所以要检测怪物 - if (block.event.trigger === "battle") { - const id = block.event.id; - if (ignoreEnemies.includes(id)) continue; - else enemies[now][i] = block.event.id; - continue; - } - // 检测触发器是否为切换楼层,不是则直接跳过 - if (block.event.trigger !== "changeFloor") continue; - const dirEntries = allChangeEntries.find( - (v) => v[1] === block.event.id - ); - // 如果不是那六种传送门,直接忽略 - if (!dirEntries) continue; - const data = block.event.data; - const dir = dirEntries[0]; - const route = now + "_" + i.replace(",", "_") + "_" + dir; - const target = data.floorId + "_" + data.loc.join("_"); + const res = {}; // 输出结果,格式:floorId_x_y_dir: floorId_x_y + const enemies = {}; + const upOrDown = {}; + const mapdir = {}; + // 开始循环搜索 + while (nowDepth < depth && stack.length > 0) { + const now = stack.shift(); // 当前id + if (core.status.maps[now].deleted) continue; + mapdir[now] = mapdir[now] ?? []; + const blocks = core.getMapBlocksObj(now); // 获取当前地图的每点的事件 + enemies[now] = {}; + // 遍历,获取可以传送的点,只检测绿点事件,因此可用红点事件进行传送来实现分区功能 + for (const i in blocks) { + const block = blocks[i]; + // 整合漏怪检测,所以要检测怪物 + if (block.event.trigger === "battle") { + const id = block.event.id; + if (ignoreEnemies.includes(id)) continue; + else enemies[now][i] = block.event.id; + continue; + } + // 检测触发器是否为切换楼层,不是则直接跳过 + if (block.event.trigger !== "changeFloor") continue; + const dirEntries = allChangeEntries.find( + (v) => v[1] === block.event.id + ); + // 如果不是那六种传送门,直接忽略 + if (!dirEntries) continue; + const data = block.event.data; + const dir = dirEntries[0]; + const route = now + "_" + i.replace(",", "_") + "_" + dir; + const target = data.floorId + "_" + data.loc.join("_"); - mapdir[now].push(dir); - if (!used[data.floorId]) { - if (dir === "upFloor" || dir === "downFloor") { - upOrDown[now] = upOrDown[id] ?? []; - upOrDown[now].push(dir); - } + mapdir[now].push(dir); + if (!used[data.floorId]) { + if (dir === "upFloor" || dir === "downFloor") { + upOrDown[now] = upOrDown[id] ?? []; + upOrDown[now].push(dir); + } - queue.push(data.floorId); // 没有搜索过,则加入栈中 - mapOrder.push(data.floorId); - used[data.floorId] = true; - } - res[route] = target; - } - if (stack.length === 0) { - stack = queue; - queue = []; - nowDepth++; - } - if (stack.length === 0 && queue.length === 0) break; - } - return { res, order: mapOrder, enemies, upOrDown, mapdir }; - }; - /** - * 获取绘制信息 - * @param {string?} center 中心地图id - * @param {number?} depth 搜索深度 - * @param {boolean?} noCache 是否不使用缓存 - * @returns {MapDrawInfo} - */ - this.getMapDrawInfo = function ( - center = core.status.floorId, - depth = defaultValue.depth, - noCache = false - ) { - nowDepth = depth; - drawingMap = center; - const id = `${center}_${depth}_${noBorder}`; - // 检查缓存 - if (drawCache[id] && !noCache) return drawCache[id]; - const map = core.plugin.bfsSearch(center, depth, noCache); - mapCache[id] = map; - const res = getDrawInfo(map.res, center, map.order); - res.upOrDown = map.upOrDown; - res.mapdir = map.mapdir; - drawCache[id] = res; - return res; - }; - /** - * 提供地图的绘制信息 - * @param {{[x: string]: string}} map 要绘制的地图,格式:floorId_x_y_dir: floorId_x_y - * @param {string} center 中心地图的id - * @param {string[]} order 遍历顺序 - * @returns {MapDrawInfo} 地图的绘制信息 - */ + queue.push(data.floorId); // 没有搜索过,则加入栈中 + mapOrder.push(data.floorId); + used[data.floorId] = true; + } + res[route] = target; + } + if (stack.length === 0) { + stack = queue; + queue = []; + nowDepth++; + } + if (stack.length === 0 && queue.length === 0) break; + } + return { res, order: mapOrder, enemies, upOrDown, mapdir }; + }; + /** + * 获取绘制信息 + * @param {string?} center 中心地图id + * @param {number?} depth 搜索深度 + * @param {boolean?} noCache 是否不使用缓存 + * @returns {MapDrawInfo} + */ + this.getMapDrawInfo = function ( + center = core.status.floorId, + depth = defaultValue.depth, + noCache = false + ) { + nowDepth = depth; + drawingMap = center; + const id = `${center}_${depth}_${noBorder}`; + // 检查缓存 + if (drawCache[id] && !noCache) return drawCache[id]; + const map = core.plugin.bfsSearch(center, depth, noCache); + mapCache[id] = map; + const res = getDrawInfo(map.res, center, map.order); + res.upOrDown = map.upOrDown; + res.mapdir = map.mapdir; + drawCache[id] = res; + return res; + }; + /** + * 提供地图的绘制信息 + * @param {{[x: string]: string}} map 要绘制的地图,格式:floorId_x_y_dir: floorId_x_y + * @param {string} center 中心地图的id + * @param {string[]} order 遍历顺序 + * @returns {MapDrawInfo} 地图的绘制信息 + */ - function getDrawInfo(map, center, order) { - // 先根据地图id分类,从而确定每个地图连接哪些地图,同时方便处理 - const links = {}; - for (const i in map) { - const splitted = i.split("_"); - const id = splitted[0]; - if (!links[id]) links[id] = {}; - links[id][i] = map[i]; - } + function getDrawInfo(map, center, order) { + // 先根据地图id分类,从而确定每个地图连接哪些地图,同时方便处理 + const links = {}; + for (const i in map) { + const splitted = i.split("_"); + const id = splitted[0]; + if (!links[id]) links[id] = {}; + links[id][i] = map[i]; + } - // 分类完毕,然后根据连接点先计算出各个地图的坐标,然后再进行判断 - const centerFloor = core.status.maps[center]; - const visitedCenter = core.hasVisitedFloor(center); - const locs = { - // 格式:[中心x, 中心y, 宽, 高, 是否到达过] - [center]: [2, 2, 1, 1, visitedCenter], - }; - // 可以上楼下楼的地图 - const upOrDown = {}; - for (const id of order) { - const now = links[id]; - // 遍历每一个地图的连接情况 - for (const from in now) { - const to = now[from]; - // 先根据from to计算物理位置 - const fromData = from.split("_"), - toData = to.split("_"); - const dir = fromData[3]; - if (dir === "upFloor" || dir === "downFloor") continue; - if (!defaultChange[dir]) continue; - const v = dirData[dir][1], // 竖直数值 - h = dirData[dir][0], // 水平数值 - ha = Math.abs(h), - va = Math.abs(v); - const ff = id, // fromFloorId - tf = toData[0]; // toFloorId - const fromFloor = core.status.maps[ff], - toFloor = core.status.maps[tf]; - const fhw = Math.floor(fromFloor.width / 2), // fromFloorHalfWidth - fhh = Math.floor(fromFloor.height / 2), - thw = Math.floor(toFloor.width / 2), - thh = Math.floor(toFloor.height / 2); - const fLoc = locs[id] ?? [0, 0]; - if (!locs[ff]) continue; - let x, y; - if (locs && locs[tf]) { - x = locs[tf][0]; - y = locs[tf][1]; - } else { - // 计算坐标,公式可以通过画图推断出 - x = fLoc[0] - v; - y = fLoc[1] - h; - } - locs[tf] = locs[tf] ?? [x, y, 1, 1, core.hasVisitedFloor(tf)]; - } - } - // 获取地图绘制需要的长宽 - let width = 0, - height = 0; - let left, right, up, down; - for (const id in locs) { - const [x, y, w, h] = locs[id]; - if (left === void 0) { - left = right = x; - up = down = y; - } - left = Math.min(x - 1, left); - right = Math.max(x + 1, right); - up = Math.min(y - 1, up); - down = Math.max(y + 1, down); - } - width = right - left; - height = down - up; + // 分类完毕,然后根据连接点先计算出各个地图的坐标,然后再进行判断 + const centerFloor = core.status.maps[center]; + const visitedCenter = core.hasVisitedFloor(center); + const locs = { + // 格式:[中心x, 中心y, 宽, 高, 是否到达过] + [center]: [2, 2, 1, 1, visitedCenter], + }; + // 可以上楼下楼的地图 + const upOrDown = {}; + for (const id of order) { + const now = links[id]; + // 遍历每一个地图的连接情况 + for (const from in now) { + const to = now[from]; + // 先根据from to计算物理位置 + const fromData = from.split("_"), + toData = to.split("_"); + const dir = fromData[3]; + if (dir === "upFloor" || dir === "downFloor") continue; + if (!defaultChange[dir]) continue; + const v = dirData[dir][1], // 竖直数值 + h = dirData[dir][0], // 水平数值 + ha = Math.abs(h), + va = Math.abs(v); + const ff = id, // fromFloorId + tf = toData[0]; // toFloorId + const fromFloor = core.status.maps[ff], + toFloor = core.status.maps[tf]; + const fhw = Math.floor(fromFloor.width / 2), // fromFloorHalfWidth + fhh = Math.floor(fromFloor.height / 2), + thw = Math.floor(toFloor.width / 2), + thh = Math.floor(toFloor.height / 2); + const fLoc = locs[id] ?? [0, 0]; + if (!locs[ff]) continue; + let x, y; + if (locs && locs[tf]) { + x = locs[tf][0]; + y = locs[tf][1]; + } else { + // 计算坐标,公式可以通过画图推断出 + x = fLoc[0] - v; + y = fLoc[1] - h; + } + locs[tf] = locs[tf] ?? [x, y, 1, 1, core.hasVisitedFloor(tf)]; + } + } + // 获取地图绘制需要的长宽 + let width = 0, + height = 0; + let left, right, up, down; + for (const id in locs) { + const [x, y, w, h] = locs[id]; + if (left === void 0) { + left = right = x; + up = down = y; + } + left = Math.min(x - 1, left); + right = Math.max(x + 1, right); + up = Math.min(y - 1, up); + down = Math.max(y + 1, down); + } + width = right - left; + height = down - up; - return { locs, width, height, layer: upOrDown }; - } + return { locs, width, height, layer: upOrDown }; + } - function mapblock(mapdir) { - let mb = ""; - if (mapdir.includes("up")) mb += "u"; - if (mapdir.includes("down")) mb += "d"; - if (mapdir.includes("left")) mb += "l"; - if (mapdir.includes("right")) mb += "r"; - return mb ? mb + ".webp" : "null.webp"; - } - core.animateFrame.globalAlphaFloor = 0; - core.animateFrame.globalAlphaFloorStatus = 1; + function mapblock(mapdir) { + let mb = ""; + if (mapdir.includes("up")) mb += "u"; + if (mapdir.includes("down")) mb += "d"; + if (mapdir.includes("left")) mb += "l"; + if (mapdir.includes("right")) mb += "r"; + return mb ? mb + ".webp" : "null.webp"; + } + core.animateFrame.globalAlphaFloor = 0; + core.animateFrame.globalAlphaFloorStatus = 1; - const tesk = document.createElement("canvas"); - tesk.width = 300; - tesk.height = 300; - const teskctx = tesk.getContext("2d"); + const tesk = document.createElement("canvas"); + tesk.width = 300; + tesk.height = 300; + const teskctx = tesk.getContext("2d"); - let line = 50; - teskctx.strokeStyle = "green"; - teskctx.fillStyle = "green"; - let now = 0; - core.registerAnimationFrame("tesk", true, function (timestamp) { - if (timestamp - now > 1000 / 60) { - now = timestamp; - core.clearMap(teskctx); - teskctx.lineWidth = 150 - line; + let line = 50; + teskctx.strokeStyle = "green"; + teskctx.fillStyle = "green"; + let now = 0; + core.registerAnimationFrame("tesk", true, function (timestamp) { + if (timestamp - now > 1000 / 60) { + now = timestamp; + core.clearMap(teskctx); + teskctx.lineWidth = 150 - line; - if (line <= 150) { - teskctx.beginPath(); - teskctx.arc(150, 150, line, 0, Math.PI * 2); - line += 2; - teskctx.stroke(); - } else { - teskctx.beginPath(); - teskctx.arc(150, 150, line - 150, 0, Math.PI * 2); - line += 2; - teskctx.fill(); - if (line >= 250) line = 50; - } - } - }); + if (line <= 150) { + teskctx.beginPath(); + teskctx.arc(150, 150, line, 0, Math.PI * 2); + line += 2; + teskctx.stroke(); + } else { + teskctx.beginPath(); + teskctx.arc(150, 150, line - 150, 0, Math.PI * 2); + line += 2; + teskctx.fill(); + if (line >= 250) line = 50; + } + } + }); - /** - * 绘制小地图 - * @param {MapDrawInfo} info 地图绘制信息 - * @param {number} scale 地图的绘制比例 - */ - this.drawSmallMap = function ( - ctx, - info, - center, - sx, - sy, - sw, - sh, - scale = defaultValue.scale - ) { - core.clearMap(ctx, sx, sy, sw + 40, sh + 60); - if (core.domStyle.isVertical) { - sy += 50; - sx += 15; - } else { - sy += 60; - sx += 30; - } - core.fillRect(ctx, sx, sy, sw, sh, "#000"); - core.strokeRect(ctx, sx, sy, sw, sh, "#fff", 5); - core.setTextAlign("outerUI", "center"); - core.fillBoldText1( - ctx, - core.status.maps[center].areas, - sx + sw / 2, - sy - 10, - "#FFFFFF", - "#000000", - 6, - "bold 42px Verdana" - ); - const locs = info.locs; - for (const id in locs) { - const loc = locs[id]; - let color = "#000"; - if (!loc[4]) color = "#f0f"; - const [x, y, w, h] = loc.map((v) => typeof v === "number" && v * scale); - const fx = x + sx, - fy = y + sy; - const mapdir = info.mapdir[id]; - const img = mapblock(mapdir); - if (x < 0 || x > 4 * scale || y < 0 || y > 4 * scale) continue; - core.drawImage(ctx, img, 0, 0, 60, 60, fx, fy, w, h); - const layer = info.upOrDown[id]; - const min = Math.min(w, h); - if (core.getFlag("任务地点") && core.getFlag("任务地点") === id) - ctx.drawImage(tesk, fx + min / 4, fy + min / 4, min / 2, min / 2); - if (layer?.includes("upFloor")) - core.drawIcon( - ctx, - defaultChange.upFloor, - fx + min / 4, - fy + min / 4, - min / 2, - min / 2 - ); - if (layer?.includes("downFloor")) - core.drawIcon( - ctx, - defaultChange.downFloor, - fx + min / 4, - fy + min / 4, - min / 2, - min / 2 - ); + /** + * 绘制小地图 + * @param {MapDrawInfo} info 地图绘制信息 + * @param {number} scale 地图的绘制比例 + */ + this.drawSmallMap = function ( + ctx, + info, + center, + sx, + sy, + sw, + sh, + scale = defaultValue.scale + ) { + core.clearMap(ctx, sx, sy, sw + 40, sh + 60); + if (core.domStyle.isVertical) { + sy += 50; + sx += 15; + } else { + sy += 60; + sx += 30; + } + core.fillRect(ctx, sx, sy, sw, sh, "#000"); + core.strokeRect(ctx, sx, sy, sw, sh, "#fff", 5); + core.setTextAlign("outerUI", "center"); + core.fillBoldText1( + ctx, + core.status.maps[center].areas, + sx + sw / 2, + sy - 10, + "#FFFFFF", + "#000000", + 6, + "bold 42px Verdana" + ); + const locs = info.locs; + for (const id in locs) { + const loc = locs[id]; + let color = "#000"; + if (!loc[4]) color = "#f0f"; + const [x, y, w, h] = loc.map((v) => typeof v === "number" && v * scale); + const fx = x + sx, + fy = y + sy; + const mapdir = info.mapdir[id]; + const img = mapblock(mapdir); + if (x < 0 || x > 4 * scale || y < 0 || y > 4 * scale) continue; + core.drawImage(ctx, img, 0, 0, 60, 60, fx, fy, w, h); + const layer = info.upOrDown[id]; + const min = Math.min(w, h); + if (core.getFlag("任务地点") && core.getFlag("任务地点") === id) + ctx.drawImage(tesk, fx + min / 4, fy + min / 4, min / 2, min / 2); + if (layer?.includes("upFloor")) + core.drawIcon( + ctx, + defaultChange.upFloor, + fx + min / 4, + fy + min / 4, + min / 2, + min / 2 + ); + if (layer?.includes("downFloor")) + core.drawIcon( + ctx, + defaultChange.downFloor, + fx + min / 4, + fy + min / 4, + min / 2, + min / 2 + ); - // 显示漏怪数量 - if (core.getFlag("showEnemy")) { - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - const c = drawingMap + "_" + nowDepth + "_" + noBorder; - const n = Object.keys(mapCache[c].enemies[id]).length; - color = "#fff"; - if (n > 10) color = "#fc3"; - if (n > 20) color = "#f22"; - ctx.shadowBlur = 0.6 * nowScale; - ctx.shadowColor = "#000"; - if (n > 0) - core.fillText( - ctx, - n, - fx + (w * 3) / 10, - fy + (h * 7) / 10, - color, - 22 + "px normal" - ); - ctx.shadowBlur = 0; - } - } - }; -}, - "楼传": function () { + // 显示漏怪数量 + if (core.getFlag("showEnemy")) { + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + const c = drawingMap + "_" + nowDepth + "_" + noBorder; + const n = Object.keys(mapCache[c].enemies[id]).length; + color = "#fff"; + if (n > 10) color = "#fc3"; + if (n > 20) color = "#f22"; + ctx.shadowBlur = 0.6 * nowScale; + ctx.shadowColor = "#000"; + if (n > 0) + core.fillText( + ctx, + n, + fx + (w * 3) / 10, + fy + (h * 7) / 10, + color, + 22 + "px normal" + ); + ctx.shadowBlur = 0; + } + } + }; + }, + 楼传: function () { // 在此增加新插件 core.canMoveFloor = function () { @@ -11801,511 +11890,510 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = 0 ); }, - "CG回廊": function () { - // 在此增加新插件 - const CGUI = document.createElement("canvas"); //CGui画布设置 - CGUI.style.position = "absolute"; - CGUI.style.zIndex = 300; - CGUI.style.display = "none"; - CGUI.id = "CGUI"; - main.dom.gameGroup.insertAdjacentElement("afterend", CGUI); - CGUI.style.top = "50%"; - CGUI.style.left = "50%"; - CGUI.style.transform = "translate(-50%,-50%)"; - const ctx = CGUI.getContext("2d"); - main.dom.CGUI = CGUI; - let page = 0; //初始页面 - let show = false; //展示状态 - CGUI.onclick = function (e) { - try { - e.preventDefault(); - if (core.isPlaying()) return false; - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor((e.clientX - left) / core.domStyle.scale), - py = Math.floor((e.clientY - top) / core.domStyle.scale); - core.ui.CG.onclick(px * 3, py * 3); - } catch (ee) { - main.log(ee); - } - }; + CG回廊: function () { + // 在此增加新插件 + const CGUI = document.createElement("canvas"); //CGui画布设置 + CGUI.style.position = "absolute"; + CGUI.style.zIndex = 300; + CGUI.style.display = "none"; + CGUI.id = "CGUI"; + main.dom.gameGroup.insertAdjacentElement("afterend", CGUI); + CGUI.style.top = "50%"; + CGUI.style.left = "50%"; + CGUI.style.transform = "translate(-50%,-50%)"; + const ctx = CGUI.getContext("2d"); + main.dom.CGUI = CGUI; + let page = 0; //初始页面 + let show = false; //展示状态 + CGUI.onclick = function (e) { + try { + e.preventDefault(); + if (core.isPlaying()) return false; + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor((e.clientX - left) / core.domStyle.scale), + py = Math.floor((e.clientY - top) / core.domStyle.scale); + core.ui.CG.onclick(px * 3, py * 3); + } catch (ee) { + main.log(ee); + } + }; - class CG { - constructor() { - this.cgs - //cg列表 - this.UIMx = [ - //空位用‘none’填充,当前ui至多4列6行 - [ - ["eve_010102.webp", "eve_010203.webp", "eve_010304.webp"], - ["eve_010501.webp", "eve_010601.webp", "eve_010701.webp"], - ], - [ - ["eve_010801.webp", "eve_010902.webp", "eve_011001.webp"], - ["eve_011101.webp", "eve_011202.webp", "eve_011302.webp"], - ], - [ - ["eve_011402.webp", "eve_020102.webp", "eve_020201.webp"], - ["eve_020301.webp", "eve_020401.webp", "eve_020501.webp"], - ], - [ - ["eve_020605.webp", "eve_020701.webp", "eve_020801.webp"], - ["eve_030101.webp", "eve_030206.webp", "eve_030302.webp"], - ], - [ - ["eve_030508.webp", "eve_030601.webp", "eve_030801.webp"], - ["eve_030901.webp", "eve_031002.webp", "eve_031101.webp"], - ], - [ - ["eve_040201.webp", "eve_040401.webp", "eve_040501.webp"], - ["eve_040601.webp", "eve_040702.webp", "eve_040801.webp"], - ], - [ - ["eve_050101.webp", "eve_050201.webp", "eve_050401.webp"], - ["eve_050501.webp", "eve_050601.webp", "eve_050704.webp"], - ], - [ - ["eve_050801.webp", "eve_070101.webp", "bg_1511.webp"], - ["bg_1521.webp", "bg_2011.webp", "bg_2521.webp"], - ], - [ - ["bg_3042.webp", "bg_3551.webp", "bg_3571.webp"], - ["bg_3721.webp", "bg_5033.webp", "bg_5044.webp"], - ], - ]; - } + class CG { + constructor() { + this.cgs; + //cg列表 + this.UIMx = [ + //空位用‘none’填充,当前ui至多4列6行 + [ + ["eve_010102.webp", "eve_010203.webp", "eve_010304.webp"], + ["eve_010501.webp", "eve_010601.webp", "eve_010701.webp"], + ], + [ + ["eve_010801.webp", "eve_010902.webp", "eve_011001.webp"], + ["eve_011101.webp", "eve_011202.webp", "eve_011302.webp"], + ], + [ + ["eve_011402.webp", "eve_020102.webp", "eve_020201.webp"], + ["eve_020301.webp", "eve_020401.webp", "eve_020501.webp"], + ], + [ + ["eve_020605.webp", "eve_020701.webp", "eve_020801.webp"], + ["eve_030101.webp", "eve_030206.webp", "eve_030302.webp"], + ], + [ + ["eve_030508.webp", "eve_030601.webp", "eve_030801.webp"], + ["eve_030901.webp", "eve_031002.webp", "eve_031101.webp"], + ], + [ + ["eve_040201.webp", "eve_040401.webp", "eve_040501.webp"], + ["eve_040601.webp", "eve_040702.webp", "eve_040801.webp"], + ], + [ + ["eve_050101.webp", "eve_050201.webp", "eve_050401.webp"], + ["eve_050501.webp", "eve_050601.webp", "eve_050704.webp"], + ], + [ + ["eve_050801.webp", "eve_070101.webp", "bg_1511.webp"], + ["bg_1521.webp", "bg_2011.webp", "bg_2521.webp"], + ], + [ + ["bg_3042.webp", "bg_3551.webp", "bg_3571.webp"], + ["bg_3721.webp", "bg_5033.webp", "bg_5044.webp"], + ], + ]; + } - //更新 - update() { - this.background(); - this.drawUI(); - } - background() { - //画布大小设置 - if (core.domStyle.isVertical) { - CGUI.width = 1248; - CGUI.height = 2028; - } else { - CGUI.width = 2028; - CGUI.height = 1248; - } - core.setTextAlign(ctx, "center"); - } - onclick(px, py) { - //点击 + //更新 + update() { + this.background(); + this.drawUI(); + } + background() { + //画布大小设置 + if (core.domStyle.isVertical) { + CGUI.width = 1248; + CGUI.height = 2028; + } else { + CGUI.width = 2028; + CGUI.height = 1248; + } + core.setTextAlign(ctx, "center"); + } + onclick(px, py) { + //点击 - if (show) { - show = !show; - core.clearMap(ctx); - this.update(); - return; - } - const makeBox = ([x, y], [w, h]) => { - return [ - [x, y], - [x + w, y + h], - ]; - }; - const inRect = ([x, y], [ - [sx, sy], - [dx, dy] - ]) => { - return sx <= x && x <= dx && sy <= y && y <= dy; - }; - const pos = [px, py]; - const backbox = makeBox([15, 35], [210, 90]); - if (inRect(pos, backbox)) { - //离开按钮是一致的,其余的记区分横竖屏 - CGUI.style.display = "none"; - core.clearMap(ctx); - core.restart(); - return; - } - if (core.domStyle.isVertical) { - //竖屏 - const pageupbox = makeBox([200, 1830], [200, 100]); - const pagedownbox = makeBox([900, 1830], [200, 100]); + if (show) { + show = !show; + core.clearMap(ctx); + this.update(); + return; + } + const makeBox = ([x, y], [w, h]) => { + return [ + [x, y], + [x + w, y + h], + ]; + }; + const inRect = ([x, y], [[sx, sy], [dx, dy]]) => { + return sx <= x && x <= dx && sy <= y && y <= dy; + }; + const pos = [px, py]; + const backbox = makeBox([15, 35], [210, 90]); + if (inRect(pos, backbox)) { + //离开按钮是一致的,其余的记区分横竖屏 + CGUI.style.display = "none"; + core.clearMap(ctx); + core.restart(); + return; + } + if (core.domStyle.isVertical) { + //竖屏 + const pageupbox = makeBox([200, 1830], [200, 100]); + const pagedownbox = makeBox([900, 1830], [200, 100]); - const imagebox0 = makeBox([50, 200], [560, 420]); - const imagebox1 = makeBox([50, 750], [560, 420]); - const imagebox2 = makeBox([50, 1300], [560, 420]); + const imagebox0 = makeBox([50, 200], [560, 420]); + const imagebox1 = makeBox([50, 750], [560, 420]); + const imagebox2 = makeBox([50, 1300], [560, 420]); - const imagebox3 = makeBox([650, 200], [560, 420]); - const imagebox4 = makeBox([650, 750], [560, 420]); - const imagebox5 = makeBox([650, 1300], [560, 420]); - if (inRect(pos, pagedownbox)) { - //2代表当前最大页数-1 - if (page < this.UIMx.length - 1) { - page++; - core.clearMap(ctx); - this.update(); - } - } else if (inRect(pos, pageupbox)) { - if (page > 0) { - page--; - core.clearMap(ctx); - this.update(); - } - } else if (inRect(pos, imagebox0)) { - if (this.cgs.includes(this.UIMx[page][0][0])) { - const img = core.material.images.images[this.UIMx[page][0][0]]; - if (img) { - ctx.save(); //保存设置 - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - ctx.drawImage(img, 0, 0, 2028, 1248); - ctx.restore(); //重置画布设置 - show = !show; - } - } - } else if (inRect(pos, imagebox1)) { - if (this.cgs.includes(this.UIMx[page][0][1])) { - const img = core.material.images.images[this.UIMx[page][0][1]]; - if (img) { - ctx.save(); //保存设置 - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - ctx.drawImage(img, 0, 0, 2028, 1248); - ctx.restore(); //重置画布设置 - show = !show; - } - } - } else if (inRect(pos, imagebox2)) { - if (this.cgs.includes(this.UIMx[page][0][2])) { - const img = core.material.images.images[this.UIMx[page][0][2]]; - if (img) { - ctx.save(); //保存设置 - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - ctx.drawImage(img, 0, 0, 2028, 1248); - ctx.restore(); //重置画布设置 - show = !show; - } - } - } else if (inRect(pos, imagebox3)) { - if (this.cgs.includes(this.UIMx[page][1][0])) { - const img = core.material.images.images[this.UIMx[page][1][0]]; - if (img) { - ctx.save(); //保存设置 - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - ctx.drawImage(img, 0, 0, 2028, 1248); - ctx.restore(); //重置画布设置 - show = !show; - } - } - } else if (inRect(pos, imagebox4)) { - if (this.cgs.includes(this.UIMx[page][1][1])) { - const img = core.material.images.images[this.UIMx[page][1][1]]; - if (img) { - ctx.save(); //保存设置 - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - ctx.drawImage(img, 0, 0, 2028, 1248); - ctx.restore(); //重置画布设置 - show = !show; - } - } - } else if (inRect(pos, imagebox5)) { - if (this.cgs.includes(this.UIMx[page][1][2])) { - const img = core.material.images.images[this.UIMx[page][1][2]]; - if (img) { - ctx.save(); //保存设置 - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - ctx.drawImage(img, 0, 0, 2028, 1248); - ctx.restore(); //重置画布设置 - show = !show; - } - } - } - } else { - const pageupbox = makeBox([200, 1110], [200, 100]); - const pagedownbox = makeBox([1600, 1110], [200, 100]); - const imagebox0 = makeBox([75, 150], [600, 450]); - const imagebox1 = makeBox([725, 150], [600, 450]); - const imagebox2 = makeBox([1300, 150], [600, 450]); - const imagebox3 = makeBox([75, 650], [600, 450]); - const imagebox4 = makeBox([725, 650], [600, 450]); - const imagebox5 = makeBox([1375, 650], [600, 450]); - if (inRect(pos, pagedownbox)) { - if (page < this.UIMx.length - 1) { - page++; - core.clearMap(ctx); - this.update(); - } - } else if (inRect(pos, pageupbox)) { - if (page > 0) { - page--; - core.clearMap(ctx); - this.update(); - } - } else if (inRect(pos, imagebox0)) { - if (this.cgs.includes(this.UIMx[page][0][0])) { - const img = core.material.images.images[this.UIMx[page][0][0]]; - if (img) { - ctx.drawImage(img, 0, 0, 2028, 1248); - show = !show; - } - } - } else if (inRect(pos, imagebox1)) { - if (this.cgs.includes(this.UIMx[page][0][1])) { - const img = core.material.images.images[this.UIMx[page][0][1]]; - if (img) { - ctx.drawImage(img, 0, 0, 2028, 1248); - show = !show; - } - } - } else if (inRect(pos, imagebox2)) { - if (this.cgs.includes(this.UIMx[page][0][2])) { - const img = core.material.images.images[this.UIMx[page][0][2]]; - if (img) { - ctx.drawImage(img, 0, 0, 2028, 1248); - show = !show; - } - } - } else if (inRect(pos, imagebox3)) { - if (this.cgs.includes(this.UIMx[page][1][0])) { - const img = core.material.images.images[this.UIMx[page][1][0]]; - if (img) { - ctx.drawImage(img, 0, 0, 2028, 1248); - show = !show; - } - } - } else if (inRect(pos, imagebox4)) { - if (this.cgs.includes(this.UIMx[page][1][1])) { - const img = core.material.images.images[this.UIMx[page][1][1]]; - if (img) { - ctx.drawImage(img, 0, 0, 2028, 1248); - show = !show; - } - } - } else if (inRect(pos, imagebox5)) { - if (this.cgs.includes(this.UIMx[page][1][2])) { - const img = core.material.images.images[this.UIMx[page][1][2]]; - if (img) { - ctx.drawImage(img, 0, 0, 2028, 1248); - show = !show; - } - } - } - } - } - drawUI() { - //绘制页面 - core.clearMap(CGUI); - const bgVertical = core.material.images.images["bg_2010.webp"]; //竖屏背景 - const bg = core.material.images.images["bg_5043.webp"]; //横屏背景 + const imagebox3 = makeBox([650, 200], [560, 420]); + const imagebox4 = makeBox([650, 750], [560, 420]); + const imagebox5 = makeBox([650, 1300], [560, 420]); + if (inRect(pos, pagedownbox)) { + //2代表当前最大页数-1 + if (page < this.UIMx.length - 1) { + page++; + core.clearMap(ctx); + this.update(); + } + } else if (inRect(pos, pageupbox)) { + if (page > 0) { + page--; + core.clearMap(ctx); + this.update(); + } + } else if (inRect(pos, imagebox0)) { + if (this.cgs.includes(this.UIMx[page][0][0])) { + const img = core.material.images.images[this.UIMx[page][0][0]]; + if (img) { + ctx.save(); //保存设置 + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + ctx.drawImage(img, 0, 0, 2028, 1248); + ctx.restore(); //重置画布设置 + show = !show; + } + } + } else if (inRect(pos, imagebox1)) { + if (this.cgs.includes(this.UIMx[page][0][1])) { + const img = core.material.images.images[this.UIMx[page][0][1]]; + if (img) { + ctx.save(); //保存设置 + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + ctx.drawImage(img, 0, 0, 2028, 1248); + ctx.restore(); //重置画布设置 + show = !show; + } + } + } else if (inRect(pos, imagebox2)) { + if (this.cgs.includes(this.UIMx[page][0][2])) { + const img = core.material.images.images[this.UIMx[page][0][2]]; + if (img) { + ctx.save(); //保存设置 + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + ctx.drawImage(img, 0, 0, 2028, 1248); + ctx.restore(); //重置画布设置 + show = !show; + } + } + } else if (inRect(pos, imagebox3)) { + if (this.cgs.includes(this.UIMx[page][1][0])) { + const img = core.material.images.images[this.UIMx[page][1][0]]; + if (img) { + ctx.save(); //保存设置 + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + ctx.drawImage(img, 0, 0, 2028, 1248); + ctx.restore(); //重置画布设置 + show = !show; + } + } + } else if (inRect(pos, imagebox4)) { + if (this.cgs.includes(this.UIMx[page][1][1])) { + const img = core.material.images.images[this.UIMx[page][1][1]]; + if (img) { + ctx.save(); //保存设置 + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + ctx.drawImage(img, 0, 0, 2028, 1248); + ctx.restore(); //重置画布设置 + show = !show; + } + } + } else if (inRect(pos, imagebox5)) { + if (this.cgs.includes(this.UIMx[page][1][2])) { + const img = core.material.images.images[this.UIMx[page][1][2]]; + if (img) { + ctx.save(); //保存设置 + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + ctx.drawImage(img, 0, 0, 2028, 1248); + ctx.restore(); //重置画布设置 + show = !show; + } + } + } + } else { + const pageupbox = makeBox([200, 1110], [200, 100]); + const pagedownbox = makeBox([1600, 1110], [200, 100]); + const imagebox0 = makeBox([75, 150], [600, 450]); + const imagebox1 = makeBox([725, 150], [600, 450]); + const imagebox2 = makeBox([1300, 150], [600, 450]); + const imagebox3 = makeBox([75, 650], [600, 450]); + const imagebox4 = makeBox([725, 650], [600, 450]); + const imagebox5 = makeBox([1375, 650], [600, 450]); + if (inRect(pos, pagedownbox)) { + if (page < this.UIMx.length - 1) { + page++; + core.clearMap(ctx); + this.update(); + } + } else if (inRect(pos, pageupbox)) { + if (page > 0) { + page--; + core.clearMap(ctx); + this.update(); + } + } else if (inRect(pos, imagebox0)) { + if (this.cgs.includes(this.UIMx[page][0][0])) { + const img = core.material.images.images[this.UIMx[page][0][0]]; + if (img) { + ctx.drawImage(img, 0, 0, 2028, 1248); + show = !show; + } + } + } else if (inRect(pos, imagebox1)) { + if (this.cgs.includes(this.UIMx[page][0][1])) { + const img = core.material.images.images[this.UIMx[page][0][1]]; + if (img) { + ctx.drawImage(img, 0, 0, 2028, 1248); + show = !show; + } + } + } else if (inRect(pos, imagebox2)) { + if (this.cgs.includes(this.UIMx[page][0][2])) { + const img = core.material.images.images[this.UIMx[page][0][2]]; + if (img) { + ctx.drawImage(img, 0, 0, 2028, 1248); + show = !show; + } + } + } else if (inRect(pos, imagebox3)) { + if (this.cgs.includes(this.UIMx[page][1][0])) { + const img = core.material.images.images[this.UIMx[page][1][0]]; + if (img) { + ctx.drawImage(img, 0, 0, 2028, 1248); + show = !show; + } + } + } else if (inRect(pos, imagebox4)) { + if (this.cgs.includes(this.UIMx[page][1][1])) { + const img = core.material.images.images[this.UIMx[page][1][1]]; + if (img) { + ctx.drawImage(img, 0, 0, 2028, 1248); + show = !show; + } + } + } else if (inRect(pos, imagebox5)) { + if (this.cgs.includes(this.UIMx[page][1][2])) { + const img = core.material.images.images[this.UIMx[page][1][2]]; + if (img) { + ctx.drawImage(img, 0, 0, 2028, 1248); + show = !show; + } + } + } + } + } + drawUI() { + //绘制页面 + core.clearMap(CGUI); + const bgVertical = core.material.images.images["bg_2010.webp"]; //竖屏背景 + const bg = core.material.images.images["bg_5043.webp"]; //横屏背景 - if (core.domStyle.isVertical) { - //竖屏 + if (core.domStyle.isVertical) { + //竖屏 - core.fillRect(ctx, 0, 0, 1248, 2028, "#000000"); //黑色背景 - ctx.globalAlpha = 0.5; //透明度 - if (bgVertical) - ctx.drawImage(bgVertical, 0, 0, 1280, 1500, 0, 0, 1248, 2028); //绘制半透明背景图片 - ctx.globalAlpha = 1; //恢复为不透明 + core.fillRect(ctx, 0, 0, 1248, 2028, "#000000"); //黑色背景 + ctx.globalAlpha = 0.5; //透明度 + if (bgVertical) + ctx.drawImage(bgVertical, 0, 0, 1280, 1500, 0, 0, 1248, 2028); //绘制半透明背景图片 + ctx.globalAlpha = 1; //恢复为不透明 - core.setTextAlign(ctx, "center"); - core.fillBoldText1( - ctx, - '◀离开', - 100, - 110, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); + core.setTextAlign(ctx, "center"); + core.fillBoldText1( + ctx, + "◀离开", + 100, + 110, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); - core.fillBoldText1( - ctx, - '上一页', - 300, - 1900, - page === 0 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); + core.fillBoldText1( + ctx, + "上一页", + 300, + 1900, + page === 0 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); - core.fillBoldText1( - ctx, - (page + 1) + "/" + this.UIMx.length, - 650, - 1900, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - core.fillBoldText1( - ctx, - '下一页', - 1000, - 1900, - page === this.UIMx.length - 1 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - // 添加向上翻页和向下翻页的按钮 + core.fillBoldText1( + ctx, + page + 1 + "/" + this.UIMx.length, + 650, + 1900, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + core.fillBoldText1( + ctx, + "下一页", + 1000, + 1900, + page === this.UIMx.length - 1 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + // 添加向上翻页和向下翻页的按钮 + // 添加3*2个4:3的画框,及图片 + for (let i = 0; i < 3; i++) { + for (let j = 0; j < 2; j++) { + const img = core.material.images.images[this.UIMx[page][j][i]]; + core.strokeRect( + ctx, + 50 + j * 600, + 200 + i * 550, + 560, + 420, + "#444444", + 5 + ); + if (this.cgs.includes(this.UIMx[page][j][i])) { + if (img) + ctx.drawImage( + img, + 50 + j * 600 + 15, + 200 + i * 550 + 15, + 560 - 30, + 420 - 30 + ); + } else { + ctx.fillStyle = "#000000"; + ctx.fillRect( + 50 + j * 600 + 15, + 200 + i * 550 + 15, + 560 - 30, + 420 - 30 + ); + const img = core.material.images.images["LOGO.webp"]; + if (img) + ctx.drawImage( + img, + 50 + j * 600 + 15, + 200 + i * 550 + 15, + 560 - 30, + 420 - 30 + ); + } + } + } + } else { + //横屏 + core.fillRect(ctx, 0, 0, 2028, 1248, "#000000"); //黑色背景 + ctx.globalAlpha = 0.5; //透明度 + if (bg) ctx.drawImage(bg, 0, 0, 1280, 720, 0, 0, 2028, 1248); //绘制半透明背景图片 + ctx.globalAlpha = 1; //恢复为不透明 + //core.drawWindowSkin('winskin1.png', ctx, 0, 0, 2028, 1248); + core.setTextAlign(ctx, "center"); + core.fillBoldText1( + ctx, + "◀离开", + 110, + 100, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + // 添加向上翻页和向下翻页的按钮 + core.fillBoldText1( + ctx, + "上一页", + 300, + 1180, + page === 0 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); - // 添加3*2个4:3的画框,及图片 - for (let i = 0; i < 3; i++) { - for (let j = 0; j < 2; j++) { - const img = core.material.images.images[this.UIMx[page][j][i]]; - core.strokeRect( - ctx, - 50 + j * 600, - 200 + i * 550, - 560, - 420, - "#444444", - 5 - ); - if (this.cgs.includes(this.UIMx[page][j][i])) { - if (img) - ctx.drawImage( - img, - 50 + j * 600 + 15, - 200 + i * 550 + 15, - 560 - 30, - 420 - 30 - ); - } else { - ctx.fillStyle = "#000000" - ctx.fillRect(50 + j * 600 + 15, - 200 + i * 550 + 15, - 560 - 30, - 420 - 30) - const img = core.material.images.images["LOGO.webp"] - if (img) - ctx.drawImage( - img, - 50 + j * 600 + 15, - 200 + i * 550 + 15, - 560 - 30, - 420 - 30 - ); - } - } - } - } else { - //横屏 - core.fillRect(ctx, 0, 0, 2028, 1248, "#000000"); //黑色背景 - ctx.globalAlpha = 0.5; //透明度 - if (bg) ctx.drawImage(bg, 0, 0, 1280, 720, 0, 0, 2028, 1248); //绘制半透明背景图片 - ctx.globalAlpha = 1; //恢复为不透明 - //core.drawWindowSkin('winskin1.png', ctx, 0, 0, 2028, 1248); - core.setTextAlign(ctx, "center"); - core.fillBoldText1( - ctx, - '◀离开', - 110, - 100, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); + core.fillBoldText1( + ctx, + page + 1 + "/" + this.UIMx.length, + 1000, + 1180, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + core.fillBoldText1( + ctx, + "下一页", + 1700, + 1180, + page === this.UIMx.length - 1 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); - // 添加向上翻页和向下翻页的按钮 - core.fillBoldText1( - ctx, - '上一页', - 300, - 1180, - page === 0 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - core.fillBoldText1( - ctx, - (page + 1) + "/" + this.UIMx.length, - 1000, - 1180, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - core.fillBoldText1( - ctx, - '下一页', - 1700, - 1180, - page === this.UIMx.length - 1 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - // 添加3*2个4:3的画框 - for (let i = 0; i < 2; i++) { - for (let j = 0; j < 3; j++) { - core.strokeRect( - ctx, - 75 + j * 650, - 150 + i * 500, - 600, - 450, - "#444444", - 2 - ); - if (this.cgs.includes(this.UIMx[page][i][j])) { - const img = core.material.images.images[this.UIMx[page][i][j]]; - if (img) - ctx.drawImage( - img, - 75 + j * 650 + 15, - 150 + i * 500 + 15, - 600 - 30, - 450 - 30 - ); - } else { - ctx.fillStyle = "#000000" - ctx.fillRect(75 + j * 650 + 15, - 150 + i * 500 + 15, - 600 - 30, - 450 - 30) - const img = core.material.images.images["LOGO.webp"] - if (img) - ctx.drawImage( - img, - 75 + j * 650 + 15, - 150 + i * 500 + 15, - 600 - 30, - 450 - 30 - ); - } - } - } - } - } - } - this.setcgs = function (img) { - const a = core.getLocalStorage('cgs', []) - if (img) { - if (!a.includes(img)) a.push(img) - core.setLocalStorage('cgs', a) - } else(core.setLocalStorage('cgs')) - } - core.ui.CG = new CG(); - main.dom.CGMode.onclick = function () { - //点击开始页面的CG MODE进入cg回廊 - main.core.control.checkBgm(); - page = 0; - main.core.ui.CG.cgs = core.getLocalStorage('cgs', []) - CGUI.style.display = "block"; - main.core.ui.CG.update(); - }; -}, - "光标设置": function () { + // 添加3*2个4:3的画框 + for (let i = 0; i < 2; i++) { + for (let j = 0; j < 3; j++) { + core.strokeRect( + ctx, + 75 + j * 650, + 150 + i * 500, + 600, + 450, + "#444444", + 2 + ); + if (this.cgs.includes(this.UIMx[page][i][j])) { + const img = core.material.images.images[this.UIMx[page][i][j]]; + if (img) + ctx.drawImage( + img, + 75 + j * 650 + 15, + 150 + i * 500 + 15, + 600 - 30, + 450 - 30 + ); + } else { + ctx.fillStyle = "#000000"; + ctx.fillRect( + 75 + j * 650 + 15, + 150 + i * 500 + 15, + 600 - 30, + 450 - 30 + ); + const img = core.material.images.images["LOGO.webp"]; + if (img) + ctx.drawImage( + img, + 75 + j * 650 + 15, + 150 + i * 500 + 15, + 600 - 30, + 450 - 30 + ); + } + } + } + } + } + } + this.setcgs = function (img) { + const a = core.getLocalStorage("cgs", []); + if (img) { + if (!a.includes(img)) a.push(img); + core.setLocalStorage("cgs", a); + } else core.setLocalStorage("cgs"); + }; + core.ui.CG = new CG(); + main.dom.CGMode.onclick = function () { + //点击开始页面的CG MODE进入cg回廊 + main.core.control.checkBgm(); + page = 0; + main.core.ui.CG.cgs = core.getLocalStorage("cgs", []); + CGUI.style.display = "block"; + main.core.ui.CG.update(); + }; + }, + 光标设置: function () { // 在此增加新插件 this.changeMouse = function ( icon, @@ -12342,170 +12430,170 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = core.dom[div].style.cursor = "auto"; }; }, - "信息弹出": function () { - // 在此增加新插件 - /* 弹出显示某个内容 - * 使用方法:core.addPop(px, py, value, color, boldColor, left, jump, time, show, font, speed) - * 参数说明: - * px & py: number 弹出位置 - * value: string 显示内容 - * color: string 填充颜色 - * boldColor: string 描边颜色 - */ + 信息弹出: function () { + // 在此增加新插件 + /* 弹出显示某个内容 + * 使用方法:core.addPop(px, py, value, color, boldColor, left, jump, time, show, font, speed) + * 参数说明: + * px & py: number 弹出位置 + * value: string 显示内容 + * color: string 填充颜色 + * boldColor: string 描边颜色 + */ - // 默认字体 - var fontD = "16px Verdana"; - // 默认颜色 - var colorD = "red"; - // 默认描边颜色 - var boldColorD = "black"; + // 默认字体 + var fontD = "16px Verdana"; + // 默认颜色 + var colorD = "red"; + // 默认描边颜色 + var boldColorD = "black"; - /** 血量弹出 */ - function pop() { - var ctx = core.getContextByName("pop"); - if (!ctx) - ctx = core.createCanvas( - "pop", - 0, - 0, - core.__PIXELS__, - core.__PIXELS__, - 90 - ); - ctx.canvas.classList.add('gameCanvas', 'anti-aliasing') - core.clearMap(ctx); - core.setTextAlign("pop", "left"); - var list = core.status.pop || []; - var count = 0; - list.forEach(function (one) { - // 由frame计算出dy - var dy = 6 - one.frame * 0.2; - var dx = one.speed; - if (one.jump) { - one.py -= dy; - } - if (!one.left) { - one.px += dx; - } else { - one.px -= dx; - } - one.frame++; - // 绘制 - if (one.frame >= one.time) - core.setAlpha(ctx, 1 - (one.frame - one.time) / one.show); - else core.setAlpha(ctx, 1); - core.fillBoldText1( - ctx, - one.value, - one.px, - one.py, - one.color || "red", - one.boldColor || "black", - 2, - one.font - ); - if (one.frame >= one.time + one.show) count++; - }); - if (count > 0) list.splice(0, count); - } - if (!main.replayChecking) core.registerAnimationFrame("pop", true, pop); + /** 血量弹出 */ + function pop() { + var ctx = core.getContextByName("pop"); + if (!ctx) + ctx = core.createCanvas( + "pop", + 0, + 0, + core.__PIXELS__, + core.__PIXELS__, + 90 + ); + ctx.canvas.classList.add("gameCanvas", "anti-aliasing"); + core.clearMap(ctx); + core.setTextAlign("pop", "left"); + var list = core.status.pop || []; + var count = 0; + list.forEach(function (one) { + // 由frame计算出dy + var dy = 6 - one.frame * 0.2; + var dx = one.speed; + if (one.jump) { + one.py -= dy; + } + if (!one.left) { + one.px += dx; + } else { + one.px -= dx; + } + one.frame++; + // 绘制 + if (one.frame >= one.time) + core.setAlpha(ctx, 1 - (one.frame - one.time) / one.show); + else core.setAlpha(ctx, 1); + core.fillBoldText1( + ctx, + one.value, + one.px, + one.py, + one.color || "red", + one.boldColor || "black", + 2, + one.font + ); + if (one.frame >= one.time + one.show) count++; + }); + if (count > 0) list.splice(0, count); + } + if (!main.replayChecking) core.registerAnimationFrame("pop", true, pop); - /** 添加弹出内容 */ - this.addPop = function ( - value, - px, - py, - color, - boldColor, - left, - jump, - time, - show, - font, - speed - ) { - var data = { - px: px, - py: py, - value: value, - color: color || colorD, - boldColor: boldColor || boldColorD, - frame: 0, - left: left || false, - jump: jump || false, - time: time || 60, - show: show || 30, - font: font || fontD, - speed: speed || 1, - }; - if (!core.status.pop) core.status.pop = [data]; - else core.status.pop.push(data); - }; -}, - "warning": function () { - // 在此增加新插件 - // 默认音效名 - var defaultSound = "jingbao.mp3"; - // 默认字体名 - var defaultFont = "Verdana"; + /** 添加弹出内容 */ + this.addPop = function ( + value, + px, + py, + color, + boldColor, + left, + jump, + time, + show, + font, + speed + ) { + var data = { + px: px, + py: py, + value: value, + color: color || colorD, + boldColor: boldColor || boldColorD, + frame: 0, + left: left || false, + jump: jump || false, + time: time || 60, + show: show || 30, + font: font || fontD, + speed: speed || 1, + }; + if (!core.status.pop) core.status.pop = [data]; + else core.status.pop.push(data); + }; + }, + warning: function () { + // 在此增加新插件 + // 默认音效名 + var defaultSound = "jingbao.mp3"; + // 默认字体名 + var defaultFont = "Verdana"; - var timeout; - /** warning提示 - * @param {number} x 横坐标 - * @param {number} y 纵坐标 - * @param {string} text 显示的文字 - */ - this.drawWarning = function (x, y, size, text, text2, warning) { - if (timeout) return; - x = x ?? 6; - y = y ?? 6; - text = text || "boss"; - text += "
"; - for (var i = 0; i < 10; i++) text += " "; - text += text2; - // 生成文字 - var elements = document.querySelectorAll(".gameCanvas"); - var t = document.createElement("p"); - t.innerHTML = text; - t.style.position = "absolute"; - t.style.fontSize = size * core.domStyle.scale + "px"; - t.style.left = -(300 * core.domStyle.scale) + "px"; - t.style.top = parseInt(elements[0].style.height) / 2 - 100 + "px"; - t.style.zIndex = "300"; - t.style.color = "#f11"; - t.style.fontFamily = defaultFont; - t.style.overflow = "none"; - t.style.width = "100%"; - t.classList.add("warning"); - core.dom.gameDraw.appendChild(t); - setTimeout(function () { - t.style.left = 416 * core.domStyle.scale + "px"; - }, 50); - // 计算偏移量 - var px = ((6 - x) / 12) * 50; - var py = ((6 - y) / 12) * 50; - // 修改画布的scale和transform - elements.forEach(function (v) { - if (v instanceof HTMLCanvasElement) { - v.style.transform = "scale(2)translate(" + px + "%, " + py + "%)"; - } - }); - if (!warning) core.playSound(defaultSound); - // 拉回镜头 - timeout = setTimeout(function () { - timeout = setTimeout(function () { - timeout = void 0; - core.dom.gameDraw.removeChild(t); - }, 1500); - elements.forEach(function (v) { - if (v instanceof HTMLCanvasElement) { - v.style.transform = "none"; - } - }); - }, 1600); - }; -}, - "立体声音效": function () { + var timeout; + /** warning提示 + * @param {number} x 横坐标 + * @param {number} y 纵坐标 + * @param {string} text 显示的文字 + */ + this.drawWarning = function (x, y, size, text, text2, warning) { + if (timeout) return; + x = x ?? 6; + y = y ?? 6; + text = text || "boss"; + text += "
"; + for (var i = 0; i < 10; i++) text += " "; + text += text2; + // 生成文字 + var elements = document.querySelectorAll(".gameCanvas"); + var t = document.createElement("p"); + t.innerHTML = text; + t.style.position = "absolute"; + t.style.fontSize = size * core.domStyle.scale + "px"; + t.style.left = -(300 * core.domStyle.scale) + "px"; + t.style.top = parseInt(elements[0].style.height) / 2 - 100 + "px"; + t.style.zIndex = "300"; + t.style.color = "#f11"; + t.style.fontFamily = defaultFont; + t.style.overflow = "none"; + t.style.width = "100%"; + t.classList.add("warning"); + core.dom.gameDraw.appendChild(t); + setTimeout(function () { + t.style.left = 416 * core.domStyle.scale + "px"; + }, 50); + // 计算偏移量 + var px = ((6 - x) / 12) * 50; + var py = ((6 - y) / 12) * 50; + // 修改画布的scale和transform + elements.forEach(function (v) { + if (v instanceof HTMLCanvasElement) { + v.style.transform = "scale(2)translate(" + px + "%, " + py + "%)"; + } + }); + if (!warning) core.playSound(defaultSound); + // 拉回镜头 + timeout = setTimeout(function () { + timeout = setTimeout(function () { + timeout = void 0; + core.dom.gameDraw.removeChild(t); + }, 1500); + elements.forEach(function (v) { + if (v instanceof HTMLCanvasElement) { + v.style.transform = "none"; + } + }); + }, 1600); + }; + }, + 立体声音效: function () { // 在此增加新插件 // 音效双声道播放 var can = true; @@ -12609,7 +12697,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = }, 10); }; }, - "滑动转场": function () { + 滑动转场: function () { // 在此增加新插件 const defaultChange = { left: "leftPortal", // 左箭头 @@ -12799,538 +12887,536 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = }, 25); }; }, - "剧情cg": function () { - // 在此增加新插件 - const cg = document.createElement("canvas"); //cg画布设置 - cg.style.position = "absolute"; - cg.style.zIndex = 300; - cg.style.display = "none"; - cg.id = "cgText"; - main.dom.gameGroup.insertAdjacentElement("afterend", cg); - cg.style.top = "50%"; - cg.style.left = "50%"; - cg.style.transform = "translate(-50%,-50%)"; - const ctx = cg.getContext("2d"); - main.dom.cgText = cg; + 剧情cg: function () { + // 在此增加新插件 + const cg = document.createElement("canvas"); //cg画布设置 + cg.style.position = "absolute"; + cg.style.zIndex = 300; + cg.style.display = "none"; + cg.id = "cgText"; + main.dom.gameGroup.insertAdjacentElement("afterend", cg); + cg.style.top = "50%"; + cg.style.left = "50%"; + cg.style.transform = "translate(-50%,-50%)"; + const ctx = cg.getContext("2d"); + main.dom.cgText = cg; - cg.onmouseup = function (e) { - //鼠标抬起 + cg.onmouseup = function (e) { + //鼠标抬起 - try { - e.stopPropagation(); - if (!core.isPlaying()) return false; - core.unregisterAnimationFrame("skip"); - let a = core.getFlag("skip", false); - core.setFlag("skip", false); - if (a) { - const data = core.clone(core.status.event.data.current); + try { + e.stopPropagation(); + if (!core.isPlaying()) return false; + core.unregisterAnimationFrame("skip"); + let a = core.getFlag("skip", false); + core.setFlag("skip", false); + if (a) { + const data = core.clone(core.status.event.data.current); - core.insertAction(data); - core.doAction(); - } - } catch (ee) { - console.error(ee); - } - }; - cg.onmousedown = function (e) { - //鼠标按下 - try { - e.stopPropagation(); - if (!core.isPlaying()) return false; - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor((e.clientX - left) / core.domStyle.scale), - py = Math.floor((e.clientY - top) / core.domStyle.scale); - core.ui.cgText.click(px * 3, py * 3); - } catch (ee) { - main.log(ee); - } - }; - cg.ontouchend = function (e) { - //触摸抬起 + core.insertAction(data); + core.doAction(); + } + } catch (ee) { + console.error(ee); + } + }; + cg.onmousedown = function (e) { + //鼠标按下 + try { + e.stopPropagation(); + if (!core.isPlaying()) return false; + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor((e.clientX - left) / core.domStyle.scale), + py = Math.floor((e.clientY - top) / core.domStyle.scale); + core.ui.cgText.click(px * 3, py * 3); + } catch (ee) { + main.log(ee); + } + }; + cg.ontouchend = function (e) { + //触摸抬起 - try { - e.preventDefault(); - if (!core.isPlaying()) return false; - core.unregisterAnimationFrame("skip"); - core.setFlag("skip", false); - let a = core.getFlag("skip", false); - core.setFlag("skip", false); - if (a) { - const data = core.clone(core.status.event.data.current); + try { + e.preventDefault(); + if (!core.isPlaying()) return false; + core.unregisterAnimationFrame("skip"); + core.setFlag("skip", false); + let a = core.getFlag("skip", false); + core.setFlag("skip", false); + if (a) { + const data = core.clone(core.status.event.data.current); - core.insertAction(data); - core.doAction(); - } - } catch (ee) { - console.error(ee); - } - }; - cg.ontouchstart = function (e) { - //触摸按下 - try { - e.preventDefault(); - if (!core.isPlaying()) return false; - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor( - (e.targetTouches[0].clientX - left) / core.domStyle.scale - ), - py = Math.floor( - (e.targetTouches[0].clientY - top) / core.domStyle.scale - ); - core.ui.cgText.click(px * 3, py * 3); - } catch (ee) { - main.log(ee); - } - }; - let auto = false; - class cgText { - constructor() { - //绘制需要的变量 - this.image = ""; - this.head = { name: "face_050445.webp", px: -300 }; - this.bodyList = [ - { name: "tati_050145a.webp", px: 100, filter: false }, - { name: "tati_120124.webp", px: 1100, filter: true }, - ]; - this.name = ""; - this.text = ""; - this.time = 0; - this.WindowSkin = false; - this.sound = ""; - this.beforeSound = 0; - this.wait = 200; - this.memory = false; - } - click(px, py) { - //点击效果 + core.insertAction(data); + core.doAction(); + } + } catch (ee) { + console.error(ee); + } + }; + cg.ontouchstart = function (e) { + //触摸按下 + try { + e.preventDefault(); + if (!core.isPlaying()) return false; + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor( + (e.targetTouches[0].clientX - left) / core.domStyle.scale + ), + py = Math.floor( + (e.targetTouches[0].clientY - top) / core.domStyle.scale + ); + core.ui.cgText.click(px * 3, py * 3); + } catch (ee) { + main.log(ee); + } + }; + let auto = false; + class cgText { + constructor() { + //绘制需要的变量 + this.image = ""; + this.head = { name: "face_050445.webp", px: -300 }; + this.bodyList = [ + { name: "tati_050145a.webp", px: 100, filter: false }, + { name: "tati_120124.webp", px: 1100, filter: true }, + ]; + this.name = ""; + this.text = ""; + this.time = 0; + this.WindowSkin = false; + this.sound = ""; + this.beforeSound = 0; + this.wait = 200; + this.memory = false; + } + click(px, py) { + //点击效果 - const makeBox = ([x, y], [w, h]) => { - return [ - [x, y], - [x + w, y + h], - ]; - }; - const inRect = ([x, y], [ - [sx, sy], - [dx, dy] - ]) => { - return sx <= x && x <= dx && sy <= y && y <= dy; - }; - const pos = [px, py]; - const savebox = makeBox([1700, 1100], [192, 96]); - const saveboxVertical = makeBox([52, 1700], [96, 192]); - const skipbox = makeBox([1400, 1100], [192, 96]); - const skipboxVertical = makeBox([52, 1400], [96, 192]); - const autobox = makeBox([1700, 900], [192, 96]); - const autoboxVertical = makeBox([256, 1700], [96, 192]); - if ( - (core.domStyle.isVertical && - inRect(pos, skipboxVertical) && - !this.WindowSkin) || - (!core.domStyle.isVertical && - !this.WindowSkin && - inRect(pos, skipbox)) - ) { - auto = false; - let time = 0; - core.stopSound(this.beforeSound); - core.registerAnimationFrame("skip", true, (timestamp) => { - if (timestamp > time + 50) { - time = timestamp; - if ( - core.status.event.id == "action" && - core.status.event.data.type == "cgtext" - ) { - core.setFlag("skip", true); - main.dom.cgText.style.display = "none"; - core.doAction(); - } - } - }); - } else if ( - (core.domStyle.isVertical && - inRect(pos, autoboxVertical) && - !this.WindowSkin) || - (!core.domStyle.isVertical && - !this.WindowSkin && - inRect(pos, autobox)) - ) { - auto = !auto; + const makeBox = ([x, y], [w, h]) => { + return [ + [x, y], + [x + w, y + h], + ]; + }; + const inRect = ([x, y], [[sx, sy], [dx, dy]]) => { + return sx <= x && x <= dx && sy <= y && y <= dy; + }; + const pos = [px, py]; + const savebox = makeBox([1700, 1100], [192, 96]); + const saveboxVertical = makeBox([52, 1700], [96, 192]); + const skipbox = makeBox([1400, 1100], [192, 96]); + const skipboxVertical = makeBox([52, 1400], [96, 192]); + const autobox = makeBox([1700, 900], [192, 96]); + const autoboxVertical = makeBox([256, 1700], [96, 192]); + if ( + (core.domStyle.isVertical && + inRect(pos, skipboxVertical) && + !this.WindowSkin) || + (!core.domStyle.isVertical && + !this.WindowSkin && + inRect(pos, skipbox)) + ) { + auto = false; + let time = 0; + core.stopSound(this.beforeSound); + core.registerAnimationFrame("skip", true, (timestamp) => { + if (timestamp > time + 50) { + time = timestamp; + if ( + core.status.event.id == "action" && + core.status.event.data.type == "cgtext" + ) { + core.setFlag("skip", true); + main.dom.cgText.style.display = "none"; + core.doAction(); + } + } + }); + } else if ( + (core.domStyle.isVertical && + inRect(pos, autoboxVertical) && + !this.WindowSkin) || + (!core.domStyle.isVertical && + !this.WindowSkin && + inRect(pos, autobox)) + ) { + auto = !auto; - const data = core.clone(core.status.event.data.current); - data.showAll = true; - data.time = 0; - data.text = data.text.replace(/(\\(z))(\[.*?])?/g, ""); //去除打字机暂停效果 - data.sound = ""; - core.insertAction(data); - core.doAction(); - } else if ( - (core.domStyle.isVertical && - inRect(pos, saveboxVertical) && - !this.WindowSkin) || - (!core.domStyle.isVertical && - !this.WindowSkin && - inRect(pos, savebox)) - ) { - //存档 - auto = false; - if (core.status.event.animateUI) return; - if (core.status.event.interval != null) return; - const current = core.clone(core.status.event.data.current); - current.showAll = true; - current.time = 0; - current.sound = ""; - current.text = current.text.replace(/(\\(z))(\[.*?])?/g, ""); //去除当前事件所有打字机效果 - cg.style.display = "none"; - const data = [{ type: "callSave" }, current]; //插入存档事件 - core.insertAction(data); + const data = core.clone(core.status.event.data.current); + data.showAll = true; + data.time = 0; + data.text = data.text.replace(/(\\(z))(\[.*?])?/g, ""); //去除打字机暂停效果 + data.sound = ""; + core.insertAction(data); + core.doAction(); + } else if ( + (core.domStyle.isVertical && + inRect(pos, saveboxVertical) && + !this.WindowSkin) || + (!core.domStyle.isVertical && + !this.WindowSkin && + inRect(pos, savebox)) + ) { + //存档 + auto = false; + if (core.status.event.animateUI) return; + if (core.status.event.interval != null) return; + const current = core.clone(core.status.event.data.current); + current.showAll = true; + current.time = 0; + current.sound = ""; + current.text = current.text.replace(/(\\(z))(\[.*?])?/g, ""); //去除当前事件所有打字机效果 + cg.style.display = "none"; + const data = [{ type: "callSave" }, current]; //插入存档事件 + core.insertAction(data); - core.doAction(); - } else if (!core.status.event.data) { - cg.style.display = "none"; - core.ui._animateUI("hide", null, () => { - core.doAction(); - }); - } else { - // 正在淡入淡出的话不执行 - if (core.status.event.animateUI) return; - auto = false; + core.doAction(); + } else if (!core.status.event.data) { + cg.style.display = "none"; + core.ui._animateUI("hide", null, () => { + core.doAction(); + }); + } else { + // 正在淡入淡出的话不执行 + if (core.status.event.animateUI) return; + auto = false; - // 打字机效果显示全部文字 - if (core.status.event.interval != null) { - const data = core.clone(core.status.event.data?.current); - data.showAll = true; - data.time = 0; - data.text = data.text.replace(/(\\(z))(\[.*?])?/g, ""); //去除打字机暂停效果 - data.sound = ""; - core.insertAction(data); - core.doAction(); - return; - } else { - core.stopSound(this.beforeSound); - } + // 打字机效果显示全部文字 + if (core.status.event.interval != null) { + const data = core.clone(core.status.event.data?.current); + data.showAll = true; + data.time = 0; + data.text = data.text.replace(/(\\(z))(\[.*?])?/g, ""); //去除打字机暂停效果 + data.sound = ""; + core.insertAction(data); + core.doAction(); + return; + } else { + core.stopSound(this.beforeSound); + } - cg.style.display = "none"; - core.ui._animateUI("hide", null, () => { - core.doAction(); - }); - } - } + cg.style.display = "none"; + core.ui._animateUI("hide", null, () => { + core.doAction(); + }); + } + } - drawTextContent(ctx, content, config) { - //绘制多行文字并执行打字机效果 + drawTextContent(ctx, content, config) { + //绘制多行文字并执行打字机效果 - ctx = core.getContextByName(ctx); - // 设置默认配置项 - var textAttribute = - core.status.textAttribute || core.initStatus.textAttribute; - var globalAttribute = - core.status.globalAttribute || core.initStatus.globalAttribute; - config = core.clone(config || {}); - config.left = config.left || 0; - config.right = - config.left + (config.maxWidth == null ? core._PX_ : config.maxWidth); - config.top = config.top || 0; - config.color = core.arrayToRGBA(config.color || textAttribute.text); - if (config.bold == null) config.bold = textAttribute.bold; - config.italic = config.italic || false; - config.align = config.align || textAttribute.align || "left"; - config.fontSize = config.fontSize || textAttribute.textfont; - config.lineHeight = config.lineHeight || config.fontSize * 1.3; - config.defaultFont = config.font = config.font || globalAttribute.font; - config.time = config.time || 0; - config.letterSpacing = - config.letterSpacing == null ? - textAttribute.letterSpacing || 0 : - config.letterSpacing; + ctx = core.getContextByName(ctx); + // 设置默认配置项 + var textAttribute = + core.status.textAttribute || core.initStatus.textAttribute; + var globalAttribute = + core.status.globalAttribute || core.initStatus.globalAttribute; + config = core.clone(config || {}); + config.left = config.left || 0; + config.right = + config.left + (config.maxWidth == null ? core._PX_ : config.maxWidth); + config.top = config.top || 0; + config.color = core.arrayToRGBA(config.color || textAttribute.text); + if (config.bold == null) config.bold = textAttribute.bold; + config.italic = config.italic || false; + config.align = config.align || textAttribute.align || "left"; + config.fontSize = config.fontSize || textAttribute.textfont; + config.lineHeight = config.lineHeight || config.fontSize * 1.3; + config.defaultFont = config.font = config.font || globalAttribute.font; + config.time = config.time || 0; + config.letterSpacing = + config.letterSpacing == null + ? textAttribute.letterSpacing || 0 + : config.letterSpacing; - config.index = 0; - config.currcolor = config.color; - config.currfont = config.fontSize; - config.lineMargin = Math.max( - Math.round(config.fontSize / 4), - config.lineHeight - config.fontSize - ); - config.topMargin = parseInt(config.lineMargin / 2); - config.lineMaxHeight = config.lineMargin + config.fontSize; - config.offsetX = 0; - config.offsetY = 0; - config.line = 0; - config.blocks = []; - config.isHD = ctx == null || ctx.canvas.hasAttribute("isHD"); + config.index = 0; + config.currcolor = config.color; + config.currfont = config.fontSize; + config.lineMargin = Math.max( + Math.round(config.fontSize / 4), + config.lineHeight - config.fontSize + ); + config.topMargin = parseInt(config.lineMargin / 2); + config.lineMaxHeight = config.lineMargin + config.fontSize; + config.offsetX = 0; + config.offsetY = 0; + config.line = 0; + config.blocks = []; + config.isHD = ctx == null || ctx.canvas.hasAttribute("isHD"); - // 创建一个新的临时画布 - var tempCtx = document.createElement("canvas").getContext("2d"); - if (config.isHD && ctx) { - core.maps._setHDCanvasSize( - tempCtx, - ctx.canvas.width, - ctx.canvas.height - ); - } else { - tempCtx.canvas.width = ctx == null ? 1 : ctx.canvas.width; - tempCtx.canvas.height = ctx == null ? 1 : ctx.canvas.height; - } + // 创建一个新的临时画布 + var tempCtx = document.createElement("canvas").getContext("2d"); + if (config.isHD && ctx) { + core.maps._setHDCanvasSize( + tempCtx, + ctx.canvas.width, + ctx.canvas.height + ); + } else { + tempCtx.canvas.width = ctx == null ? 1 : ctx.canvas.width; + tempCtx.canvas.height = ctx == null ? 1 : ctx.canvas.height; + } - tempCtx.textBaseline = "top"; - tempCtx.font = core.ui._buildFont( - config.fontSize, - config.bold, - config.italic, - config.font - ); - tempCtx.fillStyle = config.color; - config = this._drawTextContent_draw(ctx, tempCtx, content, config); - return config; - } - _drawTextContent_draw(ctx, tempCtx, content, config) { - // Step 1: 绘制到tempCtx上,并记录下图块信息 - while (core.ui._drawTextContent_next(tempCtx, content, config)); + tempCtx.textBaseline = "top"; + tempCtx.font = core.ui._buildFont( + config.fontSize, + config.bold, + config.italic, + config.font + ); + tempCtx.fillStyle = config.color; + config = this._drawTextContent_draw(ctx, tempCtx, content, config); + return config; + } + _drawTextContent_draw(ctx, tempCtx, content, config) { + // Step 1: 绘制到tempCtx上,并记录下图块信息 + while (core.ui._drawTextContent_next(tempCtx, content, config)); - if (ctx == null) return config; + if (ctx == null) return config; - // Step 2: 从tempCtx绘制到画布上 - config.index = 0; - var _drawNext = function () { - if (config.index >= config.blocks.length) return false; - var block = config.blocks[config.index++]; - if (block != null) { - // It works, why? - const scale = config.isHD ? - devicePixelRatio * core.domStyle.scale : - 1; - ctx.restore(); - ctx.save(); //保存设置 - if (core.domStyle.isVertical) { - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - } - ctx.drawImage( - tempCtx.canvas, - block.left * scale, - block.top * scale, - block.width * scale, - block.height * scale, - config.left + block.left + block.marginLeft, - config.top + block.top + block.marginTop, - block.width, - block.height - ); - ctx.restore(); - } - return true; - }; + // Step 2: 从tempCtx绘制到画布上 + config.index = 0; + var _drawNext = function () { + if (config.index >= config.blocks.length) return false; + var block = config.blocks[config.index++]; + if (block != null) { + // It works, why? + const scale = config.isHD + ? devicePixelRatio * core.domStyle.scale + : 1; + ctx.restore(); + ctx.save(); //保存设置 + if (core.domStyle.isVertical) { + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + } + ctx.drawImage( + tempCtx.canvas, + block.left * scale, + block.top * scale, + block.width * scale, + block.height * scale, + config.left + block.left + block.marginLeft, + config.top + block.top + block.marginTop, + block.width, + block.height + ); + ctx.restore(); + } + return true; + }; - if (config.time == 0) { - while (_drawNext()); - if ( - (auto && !this.WindowSkin && !core.ui.cgText.sound) || - (core.ui.cgText.sound && !core.musicStatus.soundStatus) - ) { - setTimeout(() => { - if (auto) { - cg.style.display = "none"; - core.ui._animateUI("hide", null, () => { - core.doAction(); - }); - } - }, core.ui.cgText.wait); - } - } else { - clearInterval(core.status.event.interval); - core.status.event.interval = setInterval(function () { - if (!_drawNext()) { - clearInterval(core.status.event.interval); - core.status.event.interval = null; - if ( - (auto && !this.WindowSkin && !core.ui.cgText.sound) || - (core.ui.cgText.sound && !core.musicStatus.soundStatus) - ) - setTimeout(() => { - if (auto) { - cg.style.display = "none"; - core.ui._animateUI("hide", null, () => { - core.doAction(); - }); - } - }, core.ui.cgText.wait); - } - }, config.time); - } + if (config.time == 0) { + while (_drawNext()); + if ( + (auto && !this.WindowSkin && !core.ui.cgText.sound) || + (core.ui.cgText.sound && !core.musicStatus.soundStatus) + ) { + setTimeout(() => { + if (auto) { + cg.style.display = "none"; + core.ui._animateUI("hide", null, () => { + core.doAction(); + }); + } + }, core.ui.cgText.wait); + } + } else { + clearInterval(core.status.event.interval); + core.status.event.interval = setInterval(function () { + if (!_drawNext()) { + clearInterval(core.status.event.interval); + core.status.event.interval = null; + if ( + (auto && !this.WindowSkin && !core.ui.cgText.sound) || + (core.ui.cgText.sound && !core.musicStatus.soundStatus) + ) + setTimeout(() => { + if (auto) { + cg.style.display = "none"; + core.ui._animateUI("hide", null, () => { + core.doAction(); + }); + } + }, core.ui.cgText.wait); + } + }, config.time); + } - return config; - } + return config; + } - update() { - this.background(); - } - background() { - const img = core.material.images.images?.[this.image]; + update() { + this.background(); + } + background() { + const img = core.material.images.images?.[this.image]; - if (core.domStyle.isVertical) { - ctx.canvas.width = 1248; - ctx.canvas.height = 2028; - ctx.save(); //保存设置 - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - } else { - ctx.canvas.width = 2028; - ctx.canvas.height = 1248; - } + if (core.domStyle.isVertical) { + ctx.canvas.width = 1248; + ctx.canvas.height = 2028; + ctx.save(); //保存设置 + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + } else { + ctx.canvas.width = 2028; + ctx.canvas.height = 1248; + } - if (img) { - //绘制背景 - if (this.memory) ctx.filter = "sepia(50%)"; - ctx.drawImage(img, 0, 0, 2028, 1248); - ctx.filter = "none"; - } else { - core.fillRect(ctx, 0, 0, 2028, 1248); - } - this.bodyList.forEach((v) => { - //绘制立绘 - const body = core.material.images.images?.[v.name]; - if (v.filter) ctx.filter = "brightness(50%)"; - if (body) { - if (!v.w && !v.h && !v.scale) v.scale = 1.7 - if (!v.w && !v.h) { - ctx.drawImage( - body, - 0, - 0, - body.width, - body.height, - v.px, - 1248 - body.height * v.scale, - body.width * v.scale, - body.height * v.scale - ); - } else { - ctx.drawImage( - body, - 0, - 0, - body.width, - body.height, - v.px, - 1248 - (v.h ?? body.height), - v.w ?? body.width, - v.h ?? body.height) - } - } - ctx.filter = "none"; - }); - if (core.isPlaying() && !this.WindowSkin) - core.drawWindowSkin("winskin.webp", ctx, 30, 802, 1968, 416); //绘制对话框 - const head = core.material.images.images?.[this.head.name]; - if (head) { - //绘制头像 - ctx.drawImage( - head, - 0, - 0, - head.width, - head.height, - this.head.px, - 1248 - head.height * 2, - head.width * 2, - head.height * 2 - ); - } - if (core.isPlaying() && !this.WindowSkin) { - core.drawWindowSkin("winskin.webp", ctx, 1700, 1100, 192, 96); - core.fillBoldText1( - ctx, - "存 档", - 1736, - 1166, - "#FFFFFF", - "#000000", - 6, - "bold 48px Verdana" - ); - core.drawWindowSkin("winskin.webp", ctx, 1400, 1100, 192, 96); - core.fillBoldText1( - ctx, - "▶▶", - 1456, - 1166, - "#FFFFFF", - "#000000", - 6, - "bold 48px Verdana" - ); - core.drawWindowSkin("winskin.webp", ctx, 1700, 900, 192, 96); - let autoText = "AUTO"; - if (auto) autoText = "STOP"; - core.fillBoldText1( - ctx, - autoText, - 1722, - 966, - "#FFFFFF", - "#000000", - 6, - "bold 48px Verdana" - ); - } - if (this.name) - core.fillBoldText1( - ctx, - `【${this.name}】`, - 500, - 880, - "#FFFFFF", - "#000000", - 6, - "bold 48px Verdana" - ); //绘制名字 - if ( - this.sound && - core.material.sounds[this.sound] && - !core.getFlag("skip", false) && - core.musicStatus.soundStatus - ) { - this.beforeSound = core.playSound(this.sound, null, () => { - if ( - this.sound && - auto && - !this.WindowSkin && - core.musicStatus.soundStatus - ) { - setTimeout(() => { - if (auto) { - cg.style.display = "none"; - core.ui._animateUI("hide", null, () => { - core.doAction(); - }); - } - }, core.ui.cgText.wait); - } - }); - } - if (this.text && !core.getFlag("skip", false)) { - //绘制对话 - this.drawTextContent(ctx, this.text, { - left: 500, - top: 950, - bold: true, - color: "#FFFFFF", - align: "left", - fontSize: 48, - time: this.time || 0, - font: "Verdana", - maxWidth: 1000, - }); - } + if (img) { + //绘制背景 + if (this.memory) ctx.filter = "sepia(50%)"; + ctx.drawImage(img, 0, 0, 2028, 1248); + ctx.filter = "none"; + } else { + core.fillRect(ctx, 0, 0, 2028, 1248); + } + this.bodyList.forEach((v) => { + //绘制立绘 + const body = core.material.images.images?.[v.name]; + if (v.filter) ctx.filter = "brightness(50%)"; + if (body) { + if (!v.w && !v.h && !v.scale) v.scale = 1.7; + if (!v.w && !v.h) { + ctx.drawImage( + body, + 0, + 0, + body.width, + body.height, + v.px, + 1248 - body.height * v.scale, + body.width * v.scale, + body.height * v.scale + ); + } else { + ctx.drawImage( + body, + 0, + 0, + body.width, + body.height, + v.px, + 1248 - (v.h ?? body.height), + v.w ?? body.width, + v.h ?? body.height + ); + } + } + ctx.filter = "none"; + }); + if (core.isPlaying() && !this.WindowSkin) + core.drawWindowSkin("winskin.webp", ctx, 30, 802, 1968, 416); //绘制对话框 + const head = core.material.images.images?.[this.head.name]; + if (head) { + //绘制头像 + ctx.drawImage( + head, + 0, + 0, + head.width, + head.height, + this.head.px, + 1248 - head.height * 2, + head.width * 2, + head.height * 2 + ); + } + if (core.isPlaying() && !this.WindowSkin) { + core.drawWindowSkin("winskin.webp", ctx, 1700, 1100, 192, 96); + core.fillBoldText1( + ctx, + "存 档", + 1736, + 1166, + "#FFFFFF", + "#000000", + 6, + "bold 48px Verdana" + ); + core.drawWindowSkin("winskin.webp", ctx, 1400, 1100, 192, 96); + core.fillBoldText1( + ctx, + "▶▶", + 1456, + 1166, + "#FFFFFF", + "#000000", + 6, + "bold 48px Verdana" + ); + core.drawWindowSkin("winskin.webp", ctx, 1700, 900, 192, 96); + let autoText = "AUTO"; + if (auto) autoText = "STOP"; + core.fillBoldText1( + ctx, + autoText, + 1722, + 966, + "#FFFFFF", + "#000000", + 6, + "bold 48px Verdana" + ); + } + if (this.name) + core.fillBoldText1( + ctx, + `【${this.name}】`, + 500, + 880, + "#FFFFFF", + "#000000", + 6, + "bold 48px Verdana" + ); //绘制名字 + if ( + this.sound && + core.material.sounds[this.sound] && + !core.getFlag("skip", false) && + core.musicStatus.soundStatus + ) { + this.beforeSound = core.playSound(this.sound, null, () => { + if ( + this.sound && + auto && + !this.WindowSkin && + core.musicStatus.soundStatus + ) { + setTimeout(() => { + if (auto) { + cg.style.display = "none"; + core.ui._animateUI("hide", null, () => { + core.doAction(); + }); + } + }, core.ui.cgText.wait); + } + }); + } + if (this.text && !core.getFlag("skip", false)) { + //绘制对话 + this.drawTextContent(ctx, this.text, { + left: 500, + top: 950, + bold: true, + color: "#FFFFFF", + align: "left", + fontSize: 48, + time: this.time || 0, + font: "Verdana", + maxWidth: 1000, + }); + } - ctx.restore(); - } - } - core.ui.cgText = new cgText(); -}, - "旁白": function () { + ctx.restore(); + } + } + core.ui.cgText = new cgText(); + }, + 旁白: function () { // 在此增加新插件 const over = document.createElement("canvas"); //over画布设置 over.style.position = "absolute"; @@ -13820,73 +13906,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } }; }, - "属性映射": function () { - // 在此增加新插件 - this.statusEquip = function () { - const hero = core.status.hero; - //装备具体效果在这里写,道具填写道具类型为equip并选择装备类型,道具的装备属性中装备类型遵循以下填写方式: - //固定装备孔的填写0/1/2/3,分别对应主手、副手、防具、饰品 - //主副手同时可使用的,填写 武器 - //具体的换装时装备切换操作写在新道具栏/物品栏插件 - //当前仅完善法杖、单手剑、双手剑、匕首、盾牌的多孔切换操作 - //主武器效果 - if (core.getEquip[0]) { - switch (core.getEquip[0]) { - case "sword1": - hero.atk = hero.str + hero.agi; - hero.magic = false; - break; - } - } - //副手效果 - if (core.getEquip[1]) { - switch (core.getEquip[1]) { - case "sword1": - hero.atk += hero.agi; - break; - } - } - //防具效果 - if (core.getEquip[2]) { - switch (core.getEquip[2]) { - case "sword1": - hero.def = hero.con + hero.agi; - hero.hpmax = 2.5 * hero.con; - break; - } - } - //饰品效果 - if (core.getEquip[3]) { - switch (core.getEquip[3]) { - case "sword1": - hero.speed += 0.4 * hero.int + 0.6 * hero.agi; - break; - } - } - }; - this.updateStatus = function () { - const hero = core.status.hero; - //默认映射关系 - hero.hpmax = hero.str * 50 + hero.con * 50; - hero.atk = hero.str * 0.5 + hero.int * 0.5; - hero.manamax = hero.agi * 0.5 + hero.int * 0.5; - hero.def = hero.con * 0.5 + hero.agi * 0.5; - hero.mdef = hero.con * 0.5 + hero.int * 0.5; - hero.speed = hero.str * 0.5 + hero.agi * 0.5; - hero.magic = false; - this.statusEquip(); //处理装备效果 - for (let v in hero) { - //归整 - if (typeof hero[v] === "number") { - hero[v] = Math.floor(hero[v]); - } - } - hero.hp = Math.min(hero.hp, hero.hpmax); - hero.mana = Math.min(hero.mana, hero.manamax); - core.status.hero = hero; - }; -}, - "回合制boss战": function () { + 回合制boss战: function () { // 在此增加新插件 const boss = document.createElement("canvas"); //boss战画布设置 boss.style.position = "absolute"; @@ -13934,1282 +13954,1405 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } core.ui.boss = new boss1(); }, - "剧情视频引用": function () { - // 在此增加新插件 - let a; - let bgm; - - function gtouchstart() { - timeOutEvent = setTimeout(() => { - video.remove(); - video1.remove(); - core.doAction(); - clearTimeout(a); - core.playBgm(bgm); - core.resumeBgm(); - }, 2000); //这里设置定时器,定义长按500毫秒触发长按事件,时间可以自己改,个人感觉500毫秒非常合适 - return false; - } - - //手释放,如果在500毫秒内就释放,则取消长按事件,此时可以执行onclick应该执行的事件 - function gtouchend() { - if (timeOutEvent != 0) { - //这里写要执行的内容(尤如onclick事件) - console.log("你这是点击,不是长按"); - } - clearTimeout(timeOutEvent); //清除定时器 - return false; - } - - this.openvideo = function () { - if (!core.isPlaying()) return; - const video = document.createElement("iframe"); //iframe设置 - video.style.position = "absolute"; - video.style.zIndex = 320; - video.style.display = "block"; - video.id = "video"; - main.dom.gameGroup.insertAdjacentElement("afterend", video); - video.style.top = "50%"; - video.style.left = "50%"; - video.style.transform = "translate(-50%,-50%)"; - main.dom.video = video; - const video1 = document.createElement("canvas"); //video1画布设置 - video1.style.position = "absolute"; - video1.style.zIndex = 330; - video1.style.display = "block"; - video1.id = "video1"; - main.dom.gameGroup.insertAdjacentElement("afterend", video1); - video1.style.top = "50%"; - video1.style.left = "50%"; - video1.style.transform = "translate(-50%,-50%)"; - const ctx = video1.getContext("2d"); - main.dom.video1 = video1; - if (core.domStyle.isVertical) { - video.width = 416 * 3; - video.height = 676 * 3; - video.style.transform = "translate(-50%,-50%) rotate(90deg)"; //重新定位右上角为基准 - } else { - video.width = 676 * 3; - video.height = 416 * 3; - video.style.transform = "translate(-50%,-50%)"; - } - video1.ontouchstart = function (e) { - try { - e.preventDefault(); - if (!core.isPlaying()) return false; - gtouchstart(); - } catch (ee) { - main.log(ee); - } - }; - video1.ontouchend = function (e) { - try { - e.preventDefault(); - if (!core.isPlaying()) return false; - gtouchend(); - } catch (ee) { - main.log(ee); - } - }; - - video1.onmouseup = function (e) { - //鼠标抬起 - try { - e.stopPropagation(); - if (!core.isPlaying()) return false; - gtouchend(); - } catch (ee) { - console.error(ee); - } - }; - video1.onmousedown = function (e) { - //鼠标按下 - try { - e.stopPropagation(); - if (!core.isPlaying()) return false; - gtouchstart(); - } catch (ee) { - main.log(ee); - } - }; - let globalAlpha = 0; - let frame = 1; - let al = 0; - core.registerAnimationFrame("beforeop", true, function () { - al++; - core.clearMap(ctx) - ctx.globalAlpha = al / 30; - core.fillRect(ctx, 0, 0, video1.width, video1.height, "#000000"); - ctx.globalAlpha = 1; - core.fillBoldText1( - ctx, - "Loading...", - 1014, - 624, - "#FFFFFF", - "#000000", - 6, - "bold 72px Verdana" - ); - }); - core.control.resize(); - - //player.bilibili.com/player.html - //www.bilibili.com/blackboard/html5mobileplayer.html - // - video.src = - "///www.bilibili.com/blackboard/html5mobileplayer.html?isOutside=true&aid=6484104&bvid=BV1cs411b7cH&cid=10546155&p=1&poster=0&autoplay=1&high_quality=1&muted=0&danmaku=0"; - video.scrolling = "no"; - video.border = "0"; - video.crossorigin = true; - video.frameborder = "no"; - video.framespacing = "0"; - video.allowfullscreen = false; - - video.sandbox = - "allow-top-navigation allow-same-origin allow-forms allow-scripts"; - //gsl_play_mask - - video.addEventListener("load", function () { - core.unregisterAnimationFrame("beforeop"); - core.registerAnimationFrame("op", true, function () { - core.clearMap(ctx); - if (core.domStyle.isVertical) { - ctx.canvas.width = 416 * 3; - ctx.canvas.height = 676 * 3; - ctx.save(); //保存设置 - ctx.translate(416 * 3, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - } else { - ctx.canvas.width = 676 * 3; - ctx.canvas.height = 416 * 3; - } - ctx.globalAlpha = 1; - core.fillRect(ctx, 0, 0, video1.width, video1.height, "#000000"); - - ctx.globalAlpha = globalAlpha / 30; - core.setTextAlign(ctx, "center"); - core.fillBoldText1( - ctx, - "长按2秒后跳过op", - 1014, - 624, - "#FFFFFF", - "#000000", - 6, - "bold 48px Verdana" - ); - globalAlpha += frame; - if (globalAlpha > 29) frame = -1; - ctx.restore(); - if (frame === -1 && globalAlpha < 0) { - core.clearMap(ctx); - core.unregisterAnimationFrame("op"); - } - }); - bgm = core.musicStatus.playingBgm; - core.playBgm("op.mp3"); - a = setTimeout(() => { - video.remove(); - video1.remove(); - core.playBgm(bgm); - core.doAction(); - }, 127500); - }); - }; -}, - "帧动画/图片叠拼": function () { - // 在此增加新插件 - this.animationDrawable = function ( - allFarme, - color, - globalAlpha, - imageList, - soundList - ) { - if (!core.isPlaying()) { - return core.doAction(); - } - const over = main.dom.over; - const ctx = over.getContext("2d"); - over.style.display = "block"; - - let farme = 0; - let now = 0; - core.registerAnimationFrame( - "animationDrawable", - true, - function (timestamp) { - if (timestamp - now > 1000 / 60) { - now = timestamp; - if (core.domStyle.isVertical) { - over.width = 1248; - over.height = 2028; - ctx.save(); //保存设置 - ctx.translate(1248, 0); //重新定位右上角为基准 - ctx.rotate(Math.PI / 2); //旋转90度 - } else { - over.width = 2028; - over.height = 1248; - } - - ctx.globalAlpha = (globalAlpha ?? 100) / 100; - core.fillRect(ctx, 0, 0, 2028, 1248, color); - - imageList.forEach(function (one) { - if ( - farme >= (one.beforefarme ?? 0) && - farme <= (one.afterfarme ?? allFarme) - ) { - const img = core.material.images.images?.[one.image]; - if (img) { - const gla = one.globalAlpha ?? 100; - const agla = one.aglobalAlpha ?? gla, - beforefarme = one.beforefarme ?? 0; - const afterfarme = one.afterfarme ?? allFarme; - - ctx.globalAlpha = - (gla + - ((agla - gla) * (farme - beforefarme)) / - (afterfarme - beforefarme || 1)) / - 100; - - const cx = - (one.cx ?? 0) + - (((one.acx ?? 0) - (one.cx ?? 0)) * - (farme - beforefarme)) / - (afterfarme - beforefarme || 1), - cy = - (one.cy ?? 0) + - (((one.acy ?? 0) - (one.cy ?? 0)) * - (farme - beforefarme)) / - (afterfarme - beforefarme || 1), - cw = - (one.cw ?? img.width) + - (((one.acw ?? img.width) - (one.cw ?? img.width)) * - (farme - beforefarme)) / - (afterfarme - beforefarme || 1), - ch = - (one.ch ?? img.height) + - (((one.acw ?? img.height) - (one.cw ?? img.height)) * - (farme - beforefarme)) / - (afterfarme - beforefarme || 1), - x = - (one.x ?? 0) + - (((one.ax ?? 0) - (one.x ?? 0)) * (farme - beforefarme)) / - (afterfarme - beforefarme || 1), - y = - (one.y ?? 0) + - (((one.ay ?? 0) - (one.y ?? 0)) * (farme - beforefarme)) / - (afterfarme - beforefarme || 1), - w = - (one.w ?? 2028) + - (((one.aw ?? 2028) - (one.w ?? 2028)) * - (farme - beforefarme)) / - (afterfarme - beforefarme || 1), - h = - (one.h ?? 1248) + - (((one.aw ?? 1248) - (one.w ?? 1248)) * - (farme - beforefarme)) / - (afterfarme - beforefarme || 1); - ctx.drawImage(img, cx, cy, cw, ch, x, y, w, h); - } - } - }); - soundList.forEach(function (one) { - const lisen = - one.sound && - core.material.sounds[one.sound] && - core.musicStatus.soundStatus; - if (farme == one.startfarme && lisen) { - if (one.stopbefore) core.stopSound(); - core.playSound(one.sound); - } - }); - farme++; - ctx.globalAlpha = 1; - ctx.restore(); - - if (farme > allFarme) { - core.unregisterAnimationFrame("animationDrawable"); - over.style.display = "none"; - core.doAction(); - } - } - } - ); - }; -}, - "musicMode": function () { - // 在此增加新插件 - const music = document.createElement("canvas"); - music.style.position = "absolute"; - music.style.zIndex = 300; - music.style.display = "none"; - music.id = "music"; - main.dom.gameGroup.insertAdjacentElement("afterend", music); - music.style.top = "50%"; - music.style.left = "50%"; - music.style.transform = "translate(-50%,-50%)"; - const ctx = music.getContext("2d"); - main.dom.music = music; - - const audio = document.createElement("audio") - audio.autoplay = true - audio.preload = 'auto' - - function getRandomInt(min, max) { - const minCeiled = Math.ceil(min); - const maxFloored = Math.floor(max); - return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); - } - let page = 0; //初始页面 - let ischange = false; - let isvolume = false; - - function shuffle(arr) { - let n = arr.length, - random; - while (n) { - random = (Math.random() * n--) >>> 0; - [arr[n], arr[random]] = [arr[random], arr[n]]; - } - return arr; - } - music.addEventListener('mousedown', function (e) { - e.stopPropagation(); - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor((e.clientX - left) / core.domStyle.scale), - py = Math.floor((e.clientY - top) / core.domStyle.scale); - core.ui.music.mousedown(px * 3, py * 3); - - }) - music.addEventListener('mousemove', function (e) { - - e.stopPropagation(); - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor((e.clientX - left) / core.domStyle.scale), - py = Math.floor((e.clientY - top) / core.domStyle.scale); - core.ui.music.mousemove(px * 3, py * 3); - - }) - music.addEventListener('mouseup', function (e) { - - e.stopPropagation(); - ischange = false; - isvolume = false; - if (!main.core.ui.music.stop) audio.play() - - }) - music.addEventListener('mouseleave', function (e) { - - e.stopPropagation(); - ischange = false; - isvolume = false; - if (!main.core.ui.music.stop) audio.play() - - }) - music.addEventListener("touchstart", function (e) { - - e.preventDefault(); - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor( - (e.touches[0].clientX - left) / core.domStyle.scale - ), - py = Math.floor( - (e.touches[0].clientY - top) / core.domStyle.scale - ); - core.ui.music.mousedown(px * 3, py * 3); - - }) - music.addEventListener('touchmove', function (e) { - - e.stopPropagation(); - const left = core.dom.gameGroup.offsetLeft; - const top = core.dom.gameGroup.offsetTop; - const px = Math.floor((e.touches[0].clientX - left) / core.domStyle.scale), - py = Math.floor((e.touches[0].clientY - top) / core.domStyle.scale); - core.ui.music.mousemove(px * 3, py * 3); - - }) - music.addEventListener('touchend', function (e) { - - e.stopPropagation(); - ischange = false; - isvolume = false; - if (!main.core.ui.music.stop) audio.play() - - }) - music.addEventListener('touchcancel', function (e) { - - e.stopPropagation(); - ischange = false; - isvolume = false; - - }) - - audio.addEventListener('ended', function () { - switch (main.core.ui.music.type) { - case 'danqu': - audio.currentTime = 0 - if (!main.core.ui.music.stop) audio.play() - main.core.ui.music.stop = false - page = main.core.ui.music.selection[0] - - break; - case 'xunhuan': - if (main.core.ui.music.selection[1] === main.core.ui.music.musicMx[main.core.ui.music.selection[0]].length - 1) { - if (main.core.ui.music.selection[0] === main.core.ui.music.musicMx.length - 1) { - main.core.ui.music.selection[0] = 0 - main.core.ui.music.selection[1] = 0 - } else { - main.core.ui.music.selection[0] += 1 - main.core.ui.music.selection[1] = 0 - } - } else { - main.core.ui.music.selection[1] += 1 - } - main.core.ui.music.randomList.indexOf(v => v === main.core.ui.music.musicMx[main.core.ui.music.selection[0]][main.core.ui.music.selection[1]]) - page = main.core.ui.music.selection[0] - audio.src = "project/bgms/" + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][main.core.ui.music.selection[1]] - - if (!main.core.ui.music.stop) audio.play() - main.core.ui.music.stop = false - break; - case 'suiji': - if (main.core.ui.music.random < main.core.ui.music.randomList.length - 1) { - main.core.ui.music.random += 1 - } else { - main.core.ui.music.random = 0 - } - main.core.ui.music.selection[0] = main.core.ui.music.musicMx.findIndex(v => v.includes(main.core.ui.music.randomList[main.core.ui.music.random])) - main.core.ui.music.selection[1] = main.core.ui.music.musicMx[main.core.ui.music.selection[0]].indexOf(main.core.ui.music.randomList[main.core.ui.music.random]) - audio.src = "project/bgms/" + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][main.core.ui.music.selection[1]] - page = main.core.ui.music.selection[0] - - if (!main.core.ui.music.stop) audio.play() - main.core.ui.music.stop = false - break; - } - }) - - - class musicclass { - constructor() { - //music列表 - //需全塔属性注册并保存在bgms文件夹,每个数组为显示的一页内容 - this.musicMx = [ - ["Asphodelus_Ceui.mp3", "Blind_Alley.mp3"], - ["Crawler.mp3", "op.mp3", "theme.mp3"], - ]; - //音乐别名(将在播放器内显示的音乐名,music列表内的都要有对应歌名) - this.musicname = { - "Asphodelus_Ceui.mp3": "Asphodelus", - "Blind_Alley.mp3": "Blind", - "Crawler.mp3": "Crawler", - "op.mp3": "op", - "theme.mp3": "theme", - }; - this.selection = [0, 0] - this.stop = false - this.type = "xunhuan" - this.randomList = [] - this.random = 0 - } - - //更新 - update() { - this.background(); - this.drawUI(); - } - background() { - //画布大小设置 - if (core.domStyle.isVertical) { - music.width = 1248; - music.height = 2028; - } else { - music.width = 2028; - music.height = 1248; - } - } - mousedown(px, py) { - //鼠标按下时 - //console.log(px, py) - const makeBox = ([x, y], [w, h]) => { - return [ - [x, y], - [x + w, y + h], - ]; - }; - const inRect = ([x, y], [ - [sx, sy], - [dx, dy] - ]) => { - return sx <= x && x <= dx && sy <= y && y <= dy; - }; - const pos = [px, py]; - const backbox = makeBox([15, 35], [210, 90]); - if (inRect(pos, backbox)) { - //离开按钮是一致的,其余的记区分横竖屏 - music.style.display = "none"; - core.clearMap(ctx); - core.unregisterAnimationFrame('music') - audio.src = "" - core.restart(); - - return; - } - if (core.domStyle.isVertical) { //竖屏 - - const pageupbox = makeBox([100, 1230], [200, 100]); - const pagedownbox = makeBox([950, 1230], [200, 100]); - const musicbox = makeBox([100, 200], [1048, this.musicMx[page].length * 100]) - const beforebox = makeBox([120, 1720], [100, 100]) - const afterbox = makeBox([780, 1720], [100, 100]) - const playbox = makeBox([420, 1680], [200, 200]) - const typebox = makeBox([1040, 1700], [120, 120]) - const changebox = makeBox([100, 1590], [1048, 20]) - const volumebox = makeBox([250, 1940], [1050, 20]) - if (inRect(pos, pageupbox)) { - if (page !== 0) page -= 1 - return; - } - if (inRect(pos, pagedownbox)) { - if (page !== this.musicMx.length - 1) page += 1 - return; - } - if (inRect(pos, playbox)) { - if (this.stop) { - this.stop = !this.stop - audio.play() - } else { - this.stop = !this.stop - audio.pause() - } - return; - } - if (inRect(pos, beforebox)) { - switch (this.type) { - case 'danqu': - audio.currentTime = 0 - if (!this.stop) audio.play() - this.stop = false - page = this.selection[0] - - break; - case 'xunhuan': - if (this.selection[1] === 0) { - if (this.selection[0] === 0) { - this.selection[0] = this.musicMx.length - 1 - this.selection[1] = this.musicMx[this.selection[0]].length - 1 - } else { - this.selection[0] -= 1 - this.selection[1] = this.musicMx[this.selection[0]].length - 1 - } - } else { - this.selection[1] -= 1 - } - this.randomList.indexOf(this.musicMx[this.selection[0]][this.selection[1]]) - page = this.selection[0] - audio.src = "project/bgms/" + this.musicMx[this.selection[0]][this.selection[1]] - - if (!this.stop) audio.play() - this.stop = false - break; - case 'suiji': - if (this.random > 0) { - this.random -= 1 - } else { - this.random = this.randomList.length - 1 - } - this.selection[0] = this.musicMx.findIndex(v => v.includes(this.randomList[this.random])) - this.selection[1] = this.musicMx[this.selection[0]].indexOf(this.randomList[this.random]) - audio.src = "project/bgms/" + this.musicMx[this.selection[0]][this.selection[1]] - page = this.selection[0] - - if (!this.stop) audio.play() - this.stop = false - break; - } - return; - } - if (inRect(pos, afterbox)) { - switch (this.type) { - case 'danqu': - audio.currentTime = 0 - if (!this.stop) audio.play() - this.stop = false - page = this.selection[0] - break; - case 'xunhuan': - if (this.selection[1] === this.musicMx[this.selection[0]].length - 1) { - if (this.selection[0] === this.musicMx.length - 1) { - this.selection[0] = 0 - this.selection[1] = 0 - } else { - this.selection[0] += 1 - this.selection[1] = 0 - } - } else { - this.selection[1] += 1 - } - this.random = this.randomList.indexOf(this.musicMx[this.selection[0]][this.selection[1]]) - page = this.selection[0] - audio.src = "project/bgms/" + this.musicMx[this.selection[0]][this.selection[1]] - - if (!this.stop) audio.play() - this.stop = false - break; - case 'suiji': - if (this.random < this.randomList.length - 1) { - this.random += 1 - } else { - this.random = 0 - } - this.selection[0] = this.musicMx.findIndex(v => v.includes(this.randomList[this.random])) - this.selection[1] = this.musicMx[this.selection[0]].indexOf(this.randomList[this.random]) - audio.src = "project/bgms/" + this.musicMx[this.selection[0]][this.selection[1]] - - page = this.selection[0] - if (!this.stop) audio.play() - this.stop = false - break; - } - return; - } - if (inRect(pos, typebox)) { - switch (this.type) { - case 'danqu': - this.type = 'xunhuan' - break; - case 'xunhuan': - this.type = 'suiji' - break; - case 'suiji': - this.type = 'danqu' - break; - } - return; - } - if (inRect(pos, musicbox)) { - - const index = Math.floor((py - 200) / 100) - if (page !== this.selection[0] || index !== this.selection[1]) { - this.selection[0] = page - this.selection[1] = index - this.randomList.indexOf(this.musicMx[this.selection[0]][this.selection[1]]) - audio.src = "project/bgms/" + this.musicMx[page][index] - - if (!this.stop) audio.play() - this.stop = false - - } else { - if (this.stop) { - this.stop = !this.stop - audio.play() - } else { - this.stop = !this.stop - audio.pause() - } - } - return; - } - if (inRect(pos, changebox)) { - - const time = Math.floor((px - 100) / 1000 * audio.duration) - - audio.pause() - audio.currentTime = time; - - ischange = true - } - if (inRect(pos, volumebox)) { - const time = Math.min(Math.max((px - 250) / 800, 0), 1) - audio.volume = time - isvolume = true - } - - } else { //横屏 - const pageupbox = makeBox([1050, 1100], [200, 100]); - const pagedownbox = makeBox([1550, 1100], [200, 100]); - const musicbox = makeBox([900, 100], [1000, this.musicMx[page].length * 100]) - const beforebox = makeBox([135, 740], [50, 50]) - const afterbox = makeBox([450, 740], [50, 50]) - const playbox = makeBox([250, 700], [200, 200]) - const typebox = makeBox([600, 700], [100, 100]) - const changebox = makeBox([100, 590], [600, 20]) - const volumebox = makeBox([100, 990], [600, 20]) - if (inRect(pos, pageupbox)) { - if (page !== 0) page -= 1 - return; - } - if (inRect(pos, pagedownbox)) { - if (page !== this.musicMx.length - 1) page += 1 - return; - } - if (inRect(pos, playbox)) { - if (this.stop) { - this.stop = !this.stop - audio.play() - } else { - this.stop = !this.stop - audio.pause() - } - return; - } - if (inRect(pos, beforebox)) { - switch (this.type) { - case 'danqu': - audio.currentTime = 0 - if (!this.stop) audio.play() - this.stop = false - page = this.selection[0] - - break; - case 'xunhuan': - if (this.selection[1] === 0) { - if (this.selection[0] === 0) { - this.selection[0] = this.musicMx.length - 1 - this.selection[1] = this.musicMx[this.selection[0]].length - 1 - } else { - this.selection[0] -= 1 - this.selection[1] = this.musicMx[this.selection[0]].length - 1 - } - } else { - this.selection[1] -= 1 - } - this.indexOf(this.musicMx[this.selection[0]][this.selection[1]]) - page = this.selection[0] - audio.src = "project/bgms/" + this.musicMx[this.selection[0]][this.selection[1]] - - if (!this.stop) audio.play() - this.stop = false - break; - case 'suiji': - if (this.random > 0) { - this.random -= 1 - } else { - this.random = this.randomList.length - 1 - } - this.selection[0] = this.musicMx.findIndex(v => v.includes(this.randomList[this.random])) - this.selection[1] = this.musicMx[this.selection[0]].indexOf(this.randomList[this.random]) - audio.src = "project/bgms/" + this.musicMx[this.selection[0]][this.selection[1]] - page = this.selection[0] - - if (!this.stop) audio.play() - this.stop = false - break; - } - return; - } - if (inRect(pos, afterbox)) { - switch (this.type) { - case 'danqu': - audio.currentTime = 0 - if (!this.stop) audio.play() - this.stop = false - page = this.selection[0] - break; - case 'xunhuan': - if (this.selection[1] === this.musicMx[this.selection[0]].length - 1) { - if (this.selection[0] === this.musicMx.length - 1) { - this.selection[0] = 0 - this.selection[1] = 0 - } else { - this.selection[0] += 1 - this.selection[1] = 0 - } - } else { - this.selection[1] += 1 - } - this.randomList.findIndex(v => v === this.musicMx[this.selection[0]][this.selection[1]]) - page = this.selection[0] - audio.src = "project/bgms/" + this.musicMx[this.selection[0]][this.selection[1]] - - if (!this.stop) audio.play() - this.stop = false - break; - case 'suiji': - if (this.random < this.randomList.length - 1) { - this.random += 1 - } else { - this.random = 0 - } - this.selection[0] = this.musicMx.findIndex(v => v.includes(this.randomList[this.random])) - this.selection[1] = this.musicMx[this.selection[0]].indexOf(main.core.ui.music.randomList[main.core.ui.music.random]) - audio.src = "project/bgms/" + this.musicMx[this.selection[0]][this.selection[1]] - - page = this.selection[0] - if (!this.stop) audio.play() - this.stop = false - break; - } - return; - } - if (inRect(pos, typebox)) { - switch (this.type) { - case 'danqu': - this.type = 'xunhuan' - break; - case 'xunhuan': - this.type = 'suiji' - break; - case 'suiji': - this.type = 'danqu' - break; - } - return; - } - if (inRect(pos, musicbox)) { - - const index = Math.floor((py - 100) / 100) - if (page !== this.selection[0] || index !== this.selection[1]) { - this.selection[0] = page - this.selection[1] = index - this.randomList.indexOf(v => v === this.musicMx[this.selection[0]][this.selection[1]]) - audio.src = "project/bgms/" + this.musicMx[page][index] - - if (!this.stop) audio.play() - this.stop = false - - } else { - if (this.stop) { - this.stop = !this.stop - audio.play() - } else { - this.stop = !this.stop - audio.pause() - } - } - return; - } - if (inRect(pos, changebox)) { - - const time = Math.floor((px - 100) / 600 * audio.duration) - - audio.pause() - audio.currentTime = time; - - ischange = true - } - if (inRect(pos, volumebox)) { - const time = Math.min(Math.max((px - 100) / 600, 0), 1) - audio.volume = time - isvolume = true - } - } - } - mousemove(px, py) { - - if (ischange) { - if (core.domStyle.isVertical) { - const time = Math.min(Math.max(Math.floor((px - 100) / 600 * audio.duration), 0), audio.duration) - - audio.currentTime = time - } else { - const time = Math.min(Math.max(Math.floor((px - 100) / 600 * audio.duration), 0), audio.duration) - - audio.currentTime = time - } - - } - if (isvolume) { - if (core.domStyle.isVertical) { - const time = Math.min(Math.max((px - 250) / 800, 0), 1) - audio.volume = time - } else { - const time = Math.min(Math.max((px - 100) / 600, 0), 1) - audio.volume = time - - } - } - } - - drawUI() { - //绘制页面 - core.clearMap(music); - const bgVertical = core.material.images.images["bg_2010.webp"]; //竖屏背景 - const bg = core.material.images.images["bg_5043.webp"]; //竖屏背景 - if (core.domStyle.isVertical) { - //竖屏 - - core.fillRect(ctx, 0, 0, 1248, 2028, "#000000"); //黑色背景 - ctx.globalAlpha = 0.3; //透明度 - if (bgVertical) - ctx.drawImage(bgVertical, 0, 0, 1280, 1500, 0, 0, 1248, 2028); //绘制半透明背景图片 - ctx.globalAlpha = 1; //恢复为不透明 - - core.setTextAlign(ctx, "center"); - core.fillBoldText1( - ctx, - '◀离开', - 110, - 100, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - - ctx.strokeStyle = "#FFFFFF" - ctx.lineWidth = 3 - ctx.beginPath() - ctx.moveTo(100, 200) - ctx.lineTo(1148, 200) - - ctx.stroke() - let posy = 300 - const indexList = this.musicMx[page] - core.setTextAlign(ctx, "left"); - for (let i = 0; i < indexList.length; i++) { - const text = this.musicname[indexList[i]] - core.fillBoldText1( - ctx, - text, - 150, - posy - 30, - page === this.selection[0] && i === this.selection[1] ? "#FFFFFF" : "#444444", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - ctx.strokeStyle = "#FFFFFF" - ctx.lineWidth = 3 - ctx.beginPath() - ctx.moveTo(100, posy) - ctx.lineTo(1148, posy) - ctx.stroke() - posy += 100 - } - ctx.beginPath() - ctx.moveTo(100, 1210) - ctx.lineTo(1148, 1210) - ctx.moveTo(100, 1200) - ctx.lineTo(1148, 1200) - ctx.stroke() - - core.fillBoldText1( - ctx, - '上一页', - 100, - 1300, - page === 0 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - core.fillBoldText1( - ctx, - (page + 1) + "/" + this.musicMx.length, - 580, - 1300, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - core.fillBoldText1( - ctx, - '下一页', - 950, - 1300, - page === this.musicMx.length - 1 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - - ctx.strokeStyle = "#ffffff" - ctx.lineWidth = 3 - ctx.beginPath() - ctx.moveTo(100, 1600) - ctx.lineTo(1148, 1600) - ctx.stroke() - ctx.fillStyle = "#ffffff" - ctx.font = "bold 96px Verdana" - ctx.fillText('|', 100, 1797) - ctx.fillText('◀', 115, 1800) - ctx.beginPath() - ctx.arc(505, 1770, 80, 0, 3 * Math.PI) - ctx.stroke() - ctx.fillText('|', 835, 1797) - ctx.fillText('▶', 785, 1800) - if (this.stop) { ctx.fillText('▶', 473, 1797) } else { ctx.fillText('||', 453, 1794) } - - const img = core.material.images.images[this.type + '.webp'] - if (img) ctx.drawImage(img, 1000, 1655, 200, 200) - core.setTextAlign(ctx, "center"); - ctx.font = "bold 52px Verdana" - ctx.fillText('当前歌曲', 625, 1397) - ctx.fillText(this.musicname[this.musicMx[this.selection[0]][this.selection[1]]], 625, 1507) - - ctx.font = "bold 36px Verdana" - const thistime = audio.currentTime - - if (thistime) { - const timetext = (Math.floor(thistime / 60).toString()).padStart(2, '0') + ':' + Math.floor(thistime % 60).toString().padStart(2, '0') - ctx.fillText(timetext, 960, 1650) - } else { - const timetext = "00:00" - ctx.fillText(timetext, 960, 1650) - } - ctx.fillText("/", 1030, 1650) - const fulltime = audio.duration - - if (fulltime) { - const timetext = Math.floor(fulltime / 60).toString().padStart(2, '0') + ':' + Math.floor(fulltime % 60).toString().padStart(2, '0') - ctx.fillText(timetext, 1100, 1650) - } else { - const timetext = "00:00" - ctx.fillText(timetext, 1100, 1650) - } - ctx.strokeStyle = "#ffffff" - ctx.lineWidth = 9 - ctx.fillStyle = 'rgba(255,255,255,0.5)' - const pointx = 1048 * thistime / fulltime + 100 - if (fulltime && thistime) { - ctx.beginPath() - ctx.moveTo(100, 1600) - ctx.lineTo(pointx, 1600) - ctx.stroke() - ctx.beginPath() - ctx.arc(pointx, 1600, 10, 0, 2 * Math.PI) - ctx.fill() - } else { - ctx.beginPath() - ctx.arc(100, 1600, 10, 0, 2 * Math.PI) - ctx.fill() - } - - ctx.fillStyle = "#ffffff" - ctx.font = "bold 48px Verdana" - ctx.fillText('音量', 150, 1970) - ctx.lineWidth = 3 - ctx.beginPath() - ctx.moveTo(250, 1950) - ctx.lineTo(1050, 1950) - ctx.stroke() - ctx.strokeStyle = "#ffffff" - ctx.lineWidth = 9 - ctx.fillStyle = 'rgba(255,255,255,0.5)' - - ctx.beginPath() - ctx.moveTo(250, 1950) - ctx.lineTo(800 * audio.volume + 250, 1950) - ctx.stroke() - ctx.beginPath() - ctx.arc(800 * audio.volume + 250, 1950, 10, 0, 2 * Math.PI) - ctx.fill() - core.fillBoldText1( - ctx, - Math.floor(100 * audio.volume), - 1120, - 1970, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(48, true) - ); - - } else { - //横屏 - core.fillRect(ctx, 0, 0, 2028, 1248, "#000000"); //黑色背景 - ctx.globalAlpha = 0.5; //透明度 - if (bg) ctx.drawImage(bg, 0, 0, 1280, 720, 0, 0, 2028, 1248); //绘制半透明背景图片 - ctx.globalAlpha = 1; //恢复为不透明 - core.setTextAlign(ctx, "center"); - - core.fillBoldText1( - ctx, - '◀离开', - 110, - 100, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - //core.fillRect(ctx, 440, 760, 50, 50) - ctx.strokeStyle = "#FFFFFF" - ctx.lineWidth = 3 - ctx.beginPath() - ctx.moveTo(800, 100) - ctx.lineTo(800, 1148) - ctx.moveTo(900, 100) - ctx.lineTo(1900, 100) - ctx.stroke() - let posy = 200 - const indexList = this.musicMx[page] - core.setTextAlign(ctx, "left"); - for (let i = 0; i < indexList.length; i++) { - const text = this.musicname[indexList[i]] - core.fillBoldText1( - ctx, - text, - 950, - posy - 30, - page === this.selection[0] && i === this.selection[1] ? "#FFFFFF" : "#444444", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - ctx.strokeStyle = "#FFFFFF" - ctx.lineWidth = 3 - ctx.beginPath() - ctx.moveTo(900, posy) - ctx.lineTo(1900, posy) - ctx.stroke() - posy += 100 - } - core.fillBoldText1( - ctx, - '上一页', - 1050, - 1200 - 30, - page === 0 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - - core.fillBoldText1( - ctx, - (page + 1) + "/" + this.musicMx.length, - 1350, - 1200 - 30, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - core.fillBoldText1( - ctx, - '下一页', - 1550, - 1200 - 30, - page === this.musicMx.length - 1 ? "#444444" : "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(66, true) - ); - ctx.strokeStyle = "#ffffff" - ctx.lineWidth = 3 - ctx.beginPath() - ctx.moveTo(100, 600) - ctx.lineTo(700, 600) - ctx.stroke() - ctx.fillStyle = "#ffffff" - ctx.font = "bold 48px Verdana" - ctx.fillText('|', 130, 797) - ctx.fillText('◀', 140, 800) - ctx.beginPath() - ctx.arc(310, 780, 50, 0, 2 * Math.PI) - ctx.stroke() - if (this.stop) { ctx.fillText('▶', 295, 797) } else { ctx.fillText('||', 285, 794) } - - ctx.fillText('|', 470, 797) - ctx.fillText('▶', 450, 800) - ctx.fillText('音量', 350, 900) - ctx.beginPath() - ctx.moveTo(100, 1000) - ctx.lineTo(700, 1000) - ctx.stroke() - ctx.strokeStyle = "#ffffff" - ctx.lineWidth = 9 - ctx.fillStyle = 'rgba(255,255,255,0.5)' - - ctx.beginPath() - ctx.moveTo(100, 1000) - ctx.lineTo(600 * audio.volume + 100, 1000) - ctx.stroke() - ctx.beginPath() - ctx.arc(600 * audio.volume + 100, 1000, 10, 0, 2 * Math.PI) - ctx.fill() - core.fillBoldText1( - ctx, - Math.floor(100 * audio.volume), - 720, - 1010, - "#FFFFFF", - "#000000", - 6, - core.ui._buildFont(32, true) - ); - const img = core.material.images.images[this.type + '.webp'] - if (img) ctx.drawImage(img, 580, 730, 100, 100) - core.setTextAlign(ctx, "center"); - ctx.font = "bold 48px Verdana" - ctx.fillText('当前歌曲', 400, 297) - ctx.fillText(this.musicname[this.musicMx[this.selection[0]][this.selection[1]]], 400, 397) - - ctx.font = "bold 36px Verdana" - const thistime = audio.currentTime - - if (thistime) { - const timetext = (Math.floor(thistime / 60).toString()).padStart(2, '0') + ':' + Math.floor(thistime % 60).toString().padStart(2, '0') - ctx.fillText(timetext, 510, 650) - } else { - const timetext = "00:00" - ctx.fillText(timetext, 510, 650) - } - ctx.fillText("/", 580, 650) - const fulltime = audio.duration - - if (fulltime) { - const timetext = Math.floor(fulltime / 60).toString().padStart(2, '0') + ':' + Math.floor(fulltime % 60).toString().padStart(2, '0') - ctx.fillText(timetext, 650, 650) - } else { - const timetext = "00:00" - ctx.fillText(timetext, 650, 650) - } - ctx.strokeStyle = "#ffffff" - ctx.lineWidth = 9 - ctx.fillStyle = 'rgba(255,255,255,0.5)' - const pointx = 600 * thistime / fulltime + 100 - if (fulltime && thistime) { - ctx.beginPath() - ctx.moveTo(100, 600) - ctx.lineTo(pointx, 600) - ctx.stroke() - ctx.beginPath() - ctx.arc(pointx, 600, 10, 0, 2 * Math.PI) - ctx.fill() - } else { - ctx.beginPath() - ctx.arc(100, 600, 10, 0, 2 * Math.PI) - ctx.fill() - } - - } - } - } - core.ui.music = new musicclass(); - main.dom.musicMode.onclick = function () { - //点击开始页面的CG MODE进入cg回廊 - main.core.control.checkBgm(); - main.core.control.pauseBgm(); - audio.src = "project/bgms/" + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][main.core.ui.music.selection[1]] - const arr = main.core.ui.music.musicMx.flat(Infinity) - main.core.ui.music.randomList = shuffle(arr) - main.core.ui.music.random = main.core.ui.music.randomList.indexOf(main.core.ui.music.musicMx[main.core.ui.music.selection[0]][main.core.ui.music.selection[1]]) - page = 0; - music.style.display = "block"; - let time = 0 - core.registerAnimationFrame("music", null, (temptime) => { - if (temptime > time + 1000 / 60) { - time = temptime - main.core.ui.music.update() - } - }) - }; -}, - "横屏切换": function () { + 剧情视频引用: function () { + // 在此增加新插件 + let a; + let bgm; + + function gtouchstart() { + timeOutEvent = setTimeout(() => { + video.remove(); + video1.remove(); + core.doAction(); + clearTimeout(a); + core.playBgm(bgm); + core.resumeBgm(); + }, 2000); //这里设置定时器,定义长按500毫秒触发长按事件,时间可以自己改,个人感觉500毫秒非常合适 + return false; + } + + //手释放,如果在500毫秒内就释放,则取消长按事件,此时可以执行onclick应该执行的事件 + function gtouchend() { + if (timeOutEvent != 0) { + //这里写要执行的内容(尤如onclick事件) + console.log("你这是点击,不是长按"); + } + clearTimeout(timeOutEvent); //清除定时器 + return false; + } + + this.openvideo = function () { + if (!core.isPlaying()) return; + const video = document.createElement("iframe"); //iframe设置 + video.style.position = "absolute"; + video.style.zIndex = 320; + video.style.display = "block"; + video.id = "video"; + main.dom.gameGroup.insertAdjacentElement("afterend", video); + video.style.top = "50%"; + video.style.left = "50%"; + video.style.transform = "translate(-50%,-50%)"; + main.dom.video = video; + const video1 = document.createElement("canvas"); //video1画布设置 + video1.style.position = "absolute"; + video1.style.zIndex = 330; + video1.style.display = "block"; + video1.id = "video1"; + main.dom.gameGroup.insertAdjacentElement("afterend", video1); + video1.style.top = "50%"; + video1.style.left = "50%"; + video1.style.transform = "translate(-50%,-50%)"; + const ctx = video1.getContext("2d"); + main.dom.video1 = video1; + if (core.domStyle.isVertical) { + video.width = 416 * 3; + video.height = 676 * 3; + video.style.transform = "translate(-50%,-50%) rotate(90deg)"; //重新定位右上角为基准 + } else { + video.width = 676 * 3; + video.height = 416 * 3; + video.style.transform = "translate(-50%,-50%)"; + } + video1.ontouchstart = function (e) { + try { + e.preventDefault(); + if (!core.isPlaying()) return false; + gtouchstart(); + } catch (ee) { + main.log(ee); + } + }; + video1.ontouchend = function (e) { + try { + e.preventDefault(); + if (!core.isPlaying()) return false; + gtouchend(); + } catch (ee) { + main.log(ee); + } + }; + + video1.onmouseup = function (e) { + //鼠标抬起 + try { + e.stopPropagation(); + if (!core.isPlaying()) return false; + gtouchend(); + } catch (ee) { + console.error(ee); + } + }; + video1.onmousedown = function (e) { + //鼠标按下 + try { + e.stopPropagation(); + if (!core.isPlaying()) return false; + gtouchstart(); + } catch (ee) { + main.log(ee); + } + }; + let globalAlpha = 0; + let frame = 1; + let al = 0; + core.registerAnimationFrame("beforeop", true, function () { + al++; + core.clearMap(ctx); + ctx.globalAlpha = al / 30; + core.fillRect(ctx, 0, 0, video1.width, video1.height, "#000000"); + ctx.globalAlpha = 1; + core.fillBoldText1( + ctx, + "Loading...", + 1014, + 624, + "#FFFFFF", + "#000000", + 6, + "bold 72px Verdana" + ); + }); + core.control.resize(); + + //player.bilibili.com/player.html + //www.bilibili.com/blackboard/html5mobileplayer.html + // + video.src = + "///www.bilibili.com/blackboard/html5mobileplayer.html?isOutside=true&aid=6484104&bvid=BV1cs411b7cH&cid=10546155&p=1&poster=0&autoplay=1&high_quality=1&muted=0&danmaku=0"; + video.scrolling = "no"; + video.border = "0"; + video.crossorigin = true; + video.frameborder = "no"; + video.framespacing = "0"; + video.allowfullscreen = false; + + video.sandbox = + "allow-top-navigation allow-same-origin allow-forms allow-scripts"; + //gsl_play_mask + + video.addEventListener("load", function () { + core.unregisterAnimationFrame("beforeop"); + core.registerAnimationFrame("op", true, function () { + core.clearMap(ctx); + if (core.domStyle.isVertical) { + ctx.canvas.width = 416 * 3; + ctx.canvas.height = 676 * 3; + ctx.save(); //保存设置 + ctx.translate(416 * 3, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + } else { + ctx.canvas.width = 676 * 3; + ctx.canvas.height = 416 * 3; + } + ctx.globalAlpha = 1; + core.fillRect(ctx, 0, 0, video1.width, video1.height, "#000000"); + + ctx.globalAlpha = globalAlpha / 30; + core.setTextAlign(ctx, "center"); + core.fillBoldText1( + ctx, + "长按2秒后跳过op", + 1014, + 624, + "#FFFFFF", + "#000000", + 6, + "bold 48px Verdana" + ); + globalAlpha += frame; + if (globalAlpha > 29) frame = -1; + ctx.restore(); + if (frame === -1 && globalAlpha < 0) { + core.clearMap(ctx); + core.unregisterAnimationFrame("op"); + } + }); + bgm = core.musicStatus.playingBgm; + core.playBgm("op.mp3"); + a = setTimeout(() => { + video.remove(); + video1.remove(); + core.playBgm(bgm); + core.doAction(); + }, 127500); + }); + }; + }, + "帧动画/图片叠拼": function () { + // 在此增加新插件 + this.animationDrawable = function ( + allFarme, + color, + globalAlpha, + imageList, + soundList + ) { + if (!core.isPlaying()) { + return core.doAction(); + } + const over = main.dom.over; + const ctx = over.getContext("2d"); + over.style.display = "block"; + + let farme = 0; + let now = 0; + core.registerAnimationFrame( + "animationDrawable", + true, + function (timestamp) { + if (timestamp - now > 1000 / 60) { + now = timestamp; + if (core.domStyle.isVertical) { + over.width = 1248; + over.height = 2028; + ctx.save(); //保存设置 + ctx.translate(1248, 0); //重新定位右上角为基准 + ctx.rotate(Math.PI / 2); //旋转90度 + } else { + over.width = 2028; + over.height = 1248; + } + + ctx.globalAlpha = (globalAlpha ?? 100) / 100; + core.fillRect(ctx, 0, 0, 2028, 1248, color); + + imageList.forEach(function (one) { + if ( + farme >= (one.beforefarme ?? 0) && + farme <= (one.afterfarme ?? allFarme) + ) { + const img = core.material.images.images?.[one.image]; + if (img) { + const gla = one.globalAlpha ?? 100; + const agla = one.aglobalAlpha ?? gla, + beforefarme = one.beforefarme ?? 0; + const afterfarme = one.afterfarme ?? allFarme; + + ctx.globalAlpha = + (gla + + ((agla - gla) * (farme - beforefarme)) / + (afterfarme - beforefarme || 1)) / + 100; + + const cx = + (one.cx ?? 0) + + (((one.acx ?? 0) - (one.cx ?? 0)) * + (farme - beforefarme)) / + (afterfarme - beforefarme || 1), + cy = + (one.cy ?? 0) + + (((one.acy ?? 0) - (one.cy ?? 0)) * + (farme - beforefarme)) / + (afterfarme - beforefarme || 1), + cw = + (one.cw ?? img.width) + + (((one.acw ?? img.width) - (one.cw ?? img.width)) * + (farme - beforefarme)) / + (afterfarme - beforefarme || 1), + ch = + (one.ch ?? img.height) + + (((one.acw ?? img.height) - (one.cw ?? img.height)) * + (farme - beforefarme)) / + (afterfarme - beforefarme || 1), + x = + (one.x ?? 0) + + (((one.ax ?? 0) - (one.x ?? 0)) * (farme - beforefarme)) / + (afterfarme - beforefarme || 1), + y = + (one.y ?? 0) + + (((one.ay ?? 0) - (one.y ?? 0)) * (farme - beforefarme)) / + (afterfarme - beforefarme || 1), + w = + (one.w ?? 2028) + + (((one.aw ?? 2028) - (one.w ?? 2028)) * + (farme - beforefarme)) / + (afterfarme - beforefarme || 1), + h = + (one.h ?? 1248) + + (((one.aw ?? 1248) - (one.w ?? 1248)) * + (farme - beforefarme)) / + (afterfarme - beforefarme || 1); + ctx.drawImage(img, cx, cy, cw, ch, x, y, w, h); + } + } + }); + soundList.forEach(function (one) { + const lisen = + one.sound && + core.material.sounds[one.sound] && + core.musicStatus.soundStatus; + if (farme == one.startfarme && lisen) { + if (one.stopbefore) core.stopSound(); + core.playSound(one.sound); + } + }); + farme++; + ctx.globalAlpha = 1; + ctx.restore(); + + if (farme > allFarme) { + core.unregisterAnimationFrame("animationDrawable"); + over.style.display = "none"; + core.doAction(); + } + } + } + ); + }; + }, + musicMode: function () { + // 在此增加新插件 + const music = document.createElement("canvas"); + music.style.position = "absolute"; + music.style.zIndex = 300; + music.style.display = "none"; + music.id = "music"; + main.dom.gameGroup.insertAdjacentElement("afterend", music); + music.style.top = "50%"; + music.style.left = "50%"; + music.style.transform = "translate(-50%,-50%)"; + const ctx = music.getContext("2d"); + main.dom.music = music; + + const audio = document.createElement("audio"); + audio.autoplay = true; + audio.preload = "auto"; + + function getRandomInt(min, max) { + const minCeiled = Math.ceil(min); + const maxFloored = Math.floor(max); + return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); + } + let page = 0; //初始页面 + let ischange = false; + let isvolume = false; + + function shuffle(arr) { + let n = arr.length, + random; + while (n) { + random = (Math.random() * n--) >>> 0; + [arr[n], arr[random]] = [arr[random], arr[n]]; + } + return arr; + } + music.addEventListener("mousedown", function (e) { + e.stopPropagation(); + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor((e.clientX - left) / core.domStyle.scale), + py = Math.floor((e.clientY - top) / core.domStyle.scale); + core.ui.music.mousedown(px * 3, py * 3); + }); + music.addEventListener("mousemove", function (e) { + e.stopPropagation(); + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor((e.clientX - left) / core.domStyle.scale), + py = Math.floor((e.clientY - top) / core.domStyle.scale); + core.ui.music.mousemove(px * 3, py * 3); + }); + music.addEventListener("mouseup", function (e) { + e.stopPropagation(); + ischange = false; + isvolume = false; + if (!main.core.ui.music.stop) audio.play(); + }); + music.addEventListener("mouseleave", function (e) { + e.stopPropagation(); + ischange = false; + isvolume = false; + if (!main.core.ui.music.stop) audio.play(); + }); + music.addEventListener("touchstart", function (e) { + e.preventDefault(); + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor( + (e.touches[0].clientX - left) / core.domStyle.scale + ), + py = Math.floor((e.touches[0].clientY - top) / core.domStyle.scale); + core.ui.music.mousedown(px * 3, py * 3); + }); + music.addEventListener("touchmove", function (e) { + e.stopPropagation(); + const left = core.dom.gameGroup.offsetLeft; + const top = core.dom.gameGroup.offsetTop; + const px = Math.floor( + (e.touches[0].clientX - left) / core.domStyle.scale + ), + py = Math.floor((e.touches[0].clientY - top) / core.domStyle.scale); + core.ui.music.mousemove(px * 3, py * 3); + }); + music.addEventListener("touchend", function (e) { + e.stopPropagation(); + ischange = false; + isvolume = false; + if (!main.core.ui.music.stop) audio.play(); + }); + music.addEventListener("touchcancel", function (e) { + e.stopPropagation(); + ischange = false; + isvolume = false; + }); + + audio.addEventListener("ended", function () { + switch (main.core.ui.music.type) { + case "danqu": + audio.currentTime = 0; + if (!main.core.ui.music.stop) audio.play(); + main.core.ui.music.stop = false; + page = main.core.ui.music.selection[0]; + + break; + case "xunhuan": + if ( + main.core.ui.music.selection[1] === + main.core.ui.music.musicMx[main.core.ui.music.selection[0]].length - + 1 + ) { + if ( + main.core.ui.music.selection[0] === + main.core.ui.music.musicMx.length - 1 + ) { + main.core.ui.music.selection[0] = 0; + main.core.ui.music.selection[1] = 0; + } else { + main.core.ui.music.selection[0] += 1; + main.core.ui.music.selection[1] = 0; + } + } else { + main.core.ui.music.selection[1] += 1; + } + main.core.ui.music.randomList.indexOf( + (v) => + v === + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + page = main.core.ui.music.selection[0]; + audio.src = + "project/bgms/" + + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ]; + + if (!main.core.ui.music.stop) audio.play(); + main.core.ui.music.stop = false; + break; + case "suiji": + if ( + main.core.ui.music.random < + main.core.ui.music.randomList.length - 1 + ) { + main.core.ui.music.random += 1; + } else { + main.core.ui.music.random = 0; + } + main.core.ui.music.selection[0] = + main.core.ui.music.musicMx.findIndex((v) => + v.includes( + main.core.ui.music.randomList[main.core.ui.music.random] + ) + ); + main.core.ui.music.selection[1] = main.core.ui.music.musicMx[ + main.core.ui.music.selection[0] + ].indexOf(main.core.ui.music.randomList[main.core.ui.music.random]); + audio.src = + "project/bgms/" + + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ]; + page = main.core.ui.music.selection[0]; + + if (!main.core.ui.music.stop) audio.play(); + main.core.ui.music.stop = false; + break; + } + }); + + class musicclass { + constructor() { + //music列表 + //需全塔属性注册并保存在bgms文件夹,每个数组为显示的一页内容 + this.musicMx = [ + ["Asphodelus_Ceui.mp3", "Blind_Alley.mp3"], + ["Crawler.mp3", "op.mp3", "theme.mp3"], + ]; + //音乐别名(将在播放器内显示的音乐名,music列表内的都要有对应歌名) + this.musicname = { + "Asphodelus_Ceui.mp3": "Asphodelus", + "Blind_Alley.mp3": "Blind", + "Crawler.mp3": "Crawler", + "op.mp3": "op", + "theme.mp3": "theme", + }; + this.selection = [0, 0]; + this.stop = false; + this.type = "xunhuan"; + this.randomList = []; + this.random = 0; + } + + //更新 + update() { + this.background(); + this.drawUI(); + } + background() { + //画布大小设置 + if (core.domStyle.isVertical) { + music.width = 1248; + music.height = 2028; + } else { + music.width = 2028; + music.height = 1248; + } + } + mousedown(px, py) { + //鼠标按下时 + //console.log(px, py) + const makeBox = ([x, y], [w, h]) => { + return [ + [x, y], + [x + w, y + h], + ]; + }; + const inRect = ([x, y], [[sx, sy], [dx, dy]]) => { + return sx <= x && x <= dx && sy <= y && y <= dy; + }; + const pos = [px, py]; + const backbox = makeBox([15, 35], [210, 90]); + if (inRect(pos, backbox)) { + //离开按钮是一致的,其余的记区分横竖屏 + music.style.display = "none"; + core.clearMap(ctx); + core.unregisterAnimationFrame("music"); + audio.src = ""; + core.restart(); + + return; + } + if (core.domStyle.isVertical) { + //竖屏 + + const pageupbox = makeBox([100, 1230], [200, 100]); + const pagedownbox = makeBox([950, 1230], [200, 100]); + const musicbox = makeBox( + [100, 200], + [1048, this.musicMx[page].length * 100] + ); + const beforebox = makeBox([120, 1720], [100, 100]); + const afterbox = makeBox([780, 1720], [100, 100]); + const playbox = makeBox([420, 1680], [200, 200]); + const typebox = makeBox([1040, 1700], [120, 120]); + const changebox = makeBox([100, 1590], [1048, 20]); + const volumebox = makeBox([250, 1940], [1050, 20]); + if (inRect(pos, pageupbox)) { + if (page !== 0) page -= 1; + return; + } + if (inRect(pos, pagedownbox)) { + if (page !== this.musicMx.length - 1) page += 1; + return; + } + if (inRect(pos, playbox)) { + if (this.stop) { + this.stop = !this.stop; + audio.play(); + } else { + this.stop = !this.stop; + audio.pause(); + } + return; + } + if (inRect(pos, beforebox)) { + switch (this.type) { + case "danqu": + audio.currentTime = 0; + if (!this.stop) audio.play(); + this.stop = false; + page = this.selection[0]; + + break; + case "xunhuan": + if (this.selection[1] === 0) { + if (this.selection[0] === 0) { + this.selection[0] = this.musicMx.length - 1; + this.selection[1] = + this.musicMx[this.selection[0]].length - 1; + } else { + this.selection[0] -= 1; + this.selection[1] = + this.musicMx[this.selection[0]].length - 1; + } + } else { + this.selection[1] -= 1; + } + this.randomList.indexOf( + this.musicMx[this.selection[0]][this.selection[1]] + ); + page = this.selection[0]; + audio.src = + "project/bgms/" + + this.musicMx[this.selection[0]][this.selection[1]]; + + if (!this.stop) audio.play(); + this.stop = false; + break; + case "suiji": + if (this.random > 0) { + this.random -= 1; + } else { + this.random = this.randomList.length - 1; + } + this.selection[0] = this.musicMx.findIndex((v) => + v.includes(this.randomList[this.random]) + ); + this.selection[1] = this.musicMx[this.selection[0]].indexOf( + this.randomList[this.random] + ); + audio.src = + "project/bgms/" + + this.musicMx[this.selection[0]][this.selection[1]]; + page = this.selection[0]; + + if (!this.stop) audio.play(); + this.stop = false; + break; + } + return; + } + if (inRect(pos, afterbox)) { + switch (this.type) { + case "danqu": + audio.currentTime = 0; + if (!this.stop) audio.play(); + this.stop = false; + page = this.selection[0]; + break; + case "xunhuan": + if ( + this.selection[1] === + this.musicMx[this.selection[0]].length - 1 + ) { + if (this.selection[0] === this.musicMx.length - 1) { + this.selection[0] = 0; + this.selection[1] = 0; + } else { + this.selection[0] += 1; + this.selection[1] = 0; + } + } else { + this.selection[1] += 1; + } + this.random = this.randomList.indexOf( + this.musicMx[this.selection[0]][this.selection[1]] + ); + page = this.selection[0]; + audio.src = + "project/bgms/" + + this.musicMx[this.selection[0]][this.selection[1]]; + + if (!this.stop) audio.play(); + this.stop = false; + break; + case "suiji": + if (this.random < this.randomList.length - 1) { + this.random += 1; + } else { + this.random = 0; + } + this.selection[0] = this.musicMx.findIndex((v) => + v.includes(this.randomList[this.random]) + ); + this.selection[1] = this.musicMx[this.selection[0]].indexOf( + this.randomList[this.random] + ); + audio.src = + "project/bgms/" + + this.musicMx[this.selection[0]][this.selection[1]]; + + page = this.selection[0]; + if (!this.stop) audio.play(); + this.stop = false; + break; + } + return; + } + if (inRect(pos, typebox)) { + switch (this.type) { + case "danqu": + this.type = "xunhuan"; + break; + case "xunhuan": + this.type = "suiji"; + break; + case "suiji": + this.type = "danqu"; + break; + } + return; + } + if (inRect(pos, musicbox)) { + const index = Math.floor((py - 200) / 100); + if (page !== this.selection[0] || index !== this.selection[1]) { + this.selection[0] = page; + this.selection[1] = index; + this.randomList.indexOf( + this.musicMx[this.selection[0]][this.selection[1]] + ); + audio.src = "project/bgms/" + this.musicMx[page][index]; + + if (!this.stop) audio.play(); + this.stop = false; + } else { + if (this.stop) { + this.stop = !this.stop; + audio.play(); + } else { + this.stop = !this.stop; + audio.pause(); + } + } + return; + } + if (inRect(pos, changebox)) { + const time = Math.floor(((px - 100) / 1000) * audio.duration); + + audio.pause(); + audio.currentTime = time; + + ischange = true; + } + if (inRect(pos, volumebox)) { + const time = Math.min(Math.max((px - 250) / 800, 0), 1); + audio.volume = time; + isvolume = true; + } + } else { + //横屏 + const pageupbox = makeBox([1050, 1100], [200, 100]); + const pagedownbox = makeBox([1550, 1100], [200, 100]); + const musicbox = makeBox( + [900, 100], + [1000, this.musicMx[page].length * 100] + ); + const beforebox = makeBox([135, 740], [50, 50]); + const afterbox = makeBox([450, 740], [50, 50]); + const playbox = makeBox([250, 700], [200, 200]); + const typebox = makeBox([600, 700], [100, 100]); + const changebox = makeBox([100, 590], [600, 20]); + const volumebox = makeBox([100, 990], [600, 20]); + if (inRect(pos, pageupbox)) { + if (page !== 0) page -= 1; + return; + } + if (inRect(pos, pagedownbox)) { + if (page !== this.musicMx.length - 1) page += 1; + return; + } + if (inRect(pos, playbox)) { + if (this.stop) { + this.stop = !this.stop; + audio.play(); + } else { + this.stop = !this.stop; + audio.pause(); + } + return; + } + if (inRect(pos, beforebox)) { + switch (this.type) { + case "danqu": + audio.currentTime = 0; + if (!this.stop) audio.play(); + this.stop = false; + page = this.selection[0]; + + break; + case "xunhuan": + if (this.selection[1] === 0) { + if (this.selection[0] === 0) { + this.selection[0] = this.musicMx.length - 1; + this.selection[1] = + this.musicMx[this.selection[0]].length - 1; + } else { + this.selection[0] -= 1; + this.selection[1] = + this.musicMx[this.selection[0]].length - 1; + } + } else { + this.selection[1] -= 1; + } + this.indexOf( + this.musicMx[this.selection[0]][this.selection[1]] + ); + page = this.selection[0]; + audio.src = + "project/bgms/" + + this.musicMx[this.selection[0]][this.selection[1]]; + + if (!this.stop) audio.play(); + this.stop = false; + break; + case "suiji": + if (this.random > 0) { + this.random -= 1; + } else { + this.random = this.randomList.length - 1; + } + this.selection[0] = this.musicMx.findIndex((v) => + v.includes(this.randomList[this.random]) + ); + this.selection[1] = this.musicMx[this.selection[0]].indexOf( + this.randomList[this.random] + ); + audio.src = + "project/bgms/" + + this.musicMx[this.selection[0]][this.selection[1]]; + page = this.selection[0]; + + if (!this.stop) audio.play(); + this.stop = false; + break; + } + return; + } + if (inRect(pos, afterbox)) { + switch (this.type) { + case "danqu": + audio.currentTime = 0; + if (!this.stop) audio.play(); + this.stop = false; + page = this.selection[0]; + break; + case "xunhuan": + if ( + this.selection[1] === + this.musicMx[this.selection[0]].length - 1 + ) { + if (this.selection[0] === this.musicMx.length - 1) { + this.selection[0] = 0; + this.selection[1] = 0; + } else { + this.selection[0] += 1; + this.selection[1] = 0; + } + } else { + this.selection[1] += 1; + } + this.randomList.findIndex( + (v) => + v === this.musicMx[this.selection[0]][this.selection[1]] + ); + page = this.selection[0]; + audio.src = + "project/bgms/" + + this.musicMx[this.selection[0]][this.selection[1]]; + + if (!this.stop) audio.play(); + this.stop = false; + break; + case "suiji": + if (this.random < this.randomList.length - 1) { + this.random += 1; + } else { + this.random = 0; + } + this.selection[0] = this.musicMx.findIndex((v) => + v.includes(this.randomList[this.random]) + ); + this.selection[1] = this.musicMx[this.selection[0]].indexOf( + main.core.ui.music.randomList[main.core.ui.music.random] + ); + audio.src = + "project/bgms/" + + this.musicMx[this.selection[0]][this.selection[1]]; + + page = this.selection[0]; + if (!this.stop) audio.play(); + this.stop = false; + break; + } + return; + } + if (inRect(pos, typebox)) { + switch (this.type) { + case "danqu": + this.type = "xunhuan"; + break; + case "xunhuan": + this.type = "suiji"; + break; + case "suiji": + this.type = "danqu"; + break; + } + return; + } + if (inRect(pos, musicbox)) { + const index = Math.floor((py - 100) / 100); + if (page !== this.selection[0] || index !== this.selection[1]) { + this.selection[0] = page; + this.selection[1] = index; + this.randomList.indexOf( + (v) => v === this.musicMx[this.selection[0]][this.selection[1]] + ); + audio.src = "project/bgms/" + this.musicMx[page][index]; + + if (!this.stop) audio.play(); + this.stop = false; + } else { + if (this.stop) { + this.stop = !this.stop; + audio.play(); + } else { + this.stop = !this.stop; + audio.pause(); + } + } + return; + } + if (inRect(pos, changebox)) { + const time = Math.floor(((px - 100) / 600) * audio.duration); + + audio.pause(); + audio.currentTime = time; + + ischange = true; + } + if (inRect(pos, volumebox)) { + const time = Math.min(Math.max((px - 100) / 600, 0), 1); + audio.volume = time; + isvolume = true; + } + } + } + mousemove(px, py) { + if (ischange) { + if (core.domStyle.isVertical) { + const time = Math.min( + Math.max(Math.floor(((px - 100) / 600) * audio.duration), 0), + audio.duration + ); + + audio.currentTime = time; + } else { + const time = Math.min( + Math.max(Math.floor(((px - 100) / 600) * audio.duration), 0), + audio.duration + ); + + audio.currentTime = time; + } + } + if (isvolume) { + if (core.domStyle.isVertical) { + const time = Math.min(Math.max((px - 250) / 800, 0), 1); + audio.volume = time; + } else { + const time = Math.min(Math.max((px - 100) / 600, 0), 1); + audio.volume = time; + } + } + } + + drawUI() { + //绘制页面 + core.clearMap(music); + const bgVertical = core.material.images.images["bg_2010.webp"]; //竖屏背景 + const bg = core.material.images.images["bg_5043.webp"]; //竖屏背景 + if (core.domStyle.isVertical) { + //竖屏 + + core.fillRect(ctx, 0, 0, 1248, 2028, "#000000"); //黑色背景 + ctx.globalAlpha = 0.3; //透明度 + if (bgVertical) + ctx.drawImage(bgVertical, 0, 0, 1280, 1500, 0, 0, 1248, 2028); //绘制半透明背景图片 + ctx.globalAlpha = 1; //恢复为不透明 + + core.setTextAlign(ctx, "center"); + core.fillBoldText1( + ctx, + "◀离开", + 110, + 100, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + ctx.strokeStyle = "#FFFFFF"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(100, 200); + ctx.lineTo(1148, 200); + + ctx.stroke(); + let posy = 300; + const indexList = this.musicMx[page]; + core.setTextAlign(ctx, "left"); + for (let i = 0; i < indexList.length; i++) { + const text = this.musicname[indexList[i]]; + core.fillBoldText1( + ctx, + text, + 150, + posy - 30, + page === this.selection[0] && i === this.selection[1] + ? "#FFFFFF" + : "#444444", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + ctx.strokeStyle = "#FFFFFF"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(100, posy); + ctx.lineTo(1148, posy); + ctx.stroke(); + posy += 100; + } + ctx.beginPath(); + ctx.moveTo(100, 1210); + ctx.lineTo(1148, 1210); + ctx.moveTo(100, 1200); + ctx.lineTo(1148, 1200); + ctx.stroke(); + + core.fillBoldText1( + ctx, + "上一页", + 100, + 1300, + page === 0 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + core.fillBoldText1( + ctx, + page + 1 + "/" + this.musicMx.length, + 580, + 1300, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + core.fillBoldText1( + ctx, + "下一页", + 950, + 1300, + page === this.musicMx.length - 1 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(100, 1600); + ctx.lineTo(1148, 1600); + ctx.stroke(); + ctx.fillStyle = "#ffffff"; + ctx.font = "bold 96px Verdana"; + ctx.fillText("|", 100, 1797); + ctx.fillText("◀", 115, 1800); + ctx.beginPath(); + ctx.arc(505, 1770, 80, 0, 3 * Math.PI); + ctx.stroke(); + ctx.fillText("|", 835, 1797); + ctx.fillText("▶", 785, 1800); + if (this.stop) { + ctx.fillText("▶", 473, 1797); + } else { + ctx.fillText("||", 453, 1794); + } + + const img = core.material.images.images[this.type + ".webp"]; + if (img) ctx.drawImage(img, 1000, 1655, 200, 200); + core.setTextAlign(ctx, "center"); + ctx.font = "bold 52px Verdana"; + ctx.fillText("当前歌曲", 625, 1397); + ctx.fillText( + this.musicname[this.musicMx[this.selection[0]][this.selection[1]]], + 625, + 1507 + ); + + ctx.font = "bold 36px Verdana"; + const thistime = audio.currentTime; + + if (thistime) { + const timetext = + Math.floor(thistime / 60) + .toString() + .padStart(2, "0") + + ":" + + Math.floor(thistime % 60) + .toString() + .padStart(2, "0"); + ctx.fillText(timetext, 960, 1650); + } else { + const timetext = "00:00"; + ctx.fillText(timetext, 960, 1650); + } + ctx.fillText("/", 1030, 1650); + const fulltime = audio.duration; + + if (fulltime) { + const timetext = + Math.floor(fulltime / 60) + .toString() + .padStart(2, "0") + + ":" + + Math.floor(fulltime % 60) + .toString() + .padStart(2, "0"); + ctx.fillText(timetext, 1100, 1650); + } else { + const timetext = "00:00"; + ctx.fillText(timetext, 1100, 1650); + } + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 9; + ctx.fillStyle = "rgba(255,255,255,0.5)"; + const pointx = (1048 * thistime) / fulltime + 100; + if (fulltime && thistime) { + ctx.beginPath(); + ctx.moveTo(100, 1600); + ctx.lineTo(pointx, 1600); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(pointx, 1600, 10, 0, 2 * Math.PI); + ctx.fill(); + } else { + ctx.beginPath(); + ctx.arc(100, 1600, 10, 0, 2 * Math.PI); + ctx.fill(); + } + + ctx.fillStyle = "#ffffff"; + ctx.font = "bold 48px Verdana"; + ctx.fillText("音量", 150, 1970); + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(250, 1950); + ctx.lineTo(1050, 1950); + ctx.stroke(); + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 9; + ctx.fillStyle = "rgba(255,255,255,0.5)"; + + ctx.beginPath(); + ctx.moveTo(250, 1950); + ctx.lineTo(800 * audio.volume + 250, 1950); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(800 * audio.volume + 250, 1950, 10, 0, 2 * Math.PI); + ctx.fill(); + core.fillBoldText1( + ctx, + Math.floor(100 * audio.volume), + 1120, + 1970, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(48, true) + ); + } else { + //横屏 + core.fillRect(ctx, 0, 0, 2028, 1248, "#000000"); //黑色背景 + ctx.globalAlpha = 0.5; //透明度 + if (bg) ctx.drawImage(bg, 0, 0, 1280, 720, 0, 0, 2028, 1248); //绘制半透明背景图片 + ctx.globalAlpha = 1; //恢复为不透明 + core.setTextAlign(ctx, "center"); + + core.fillBoldText1( + ctx, + "◀离开", + 110, + 100, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + //core.fillRect(ctx, 440, 760, 50, 50) + ctx.strokeStyle = "#FFFFFF"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(800, 100); + ctx.lineTo(800, 1148); + ctx.moveTo(900, 100); + ctx.lineTo(1900, 100); + ctx.stroke(); + let posy = 200; + const indexList = this.musicMx[page]; + core.setTextAlign(ctx, "left"); + for (let i = 0; i < indexList.length; i++) { + const text = this.musicname[indexList[i]]; + core.fillBoldText1( + ctx, + text, + 950, + posy - 30, + page === this.selection[0] && i === this.selection[1] + ? "#FFFFFF" + : "#444444", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + ctx.strokeStyle = "#FFFFFF"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(900, posy); + ctx.lineTo(1900, posy); + ctx.stroke(); + posy += 100; + } + core.fillBoldText1( + ctx, + "上一页", + 1050, + 1200 - 30, + page === 0 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + + core.fillBoldText1( + ctx, + page + 1 + "/" + this.musicMx.length, + 1350, + 1200 - 30, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + core.fillBoldText1( + ctx, + "下一页", + 1550, + 1200 - 30, + page === this.musicMx.length - 1 ? "#444444" : "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(66, true) + ); + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(100, 600); + ctx.lineTo(700, 600); + ctx.stroke(); + ctx.fillStyle = "#ffffff"; + ctx.font = "bold 48px Verdana"; + ctx.fillText("|", 130, 797); + ctx.fillText("◀", 140, 800); + ctx.beginPath(); + ctx.arc(310, 780, 50, 0, 2 * Math.PI); + ctx.stroke(); + if (this.stop) { + ctx.fillText("▶", 295, 797); + } else { + ctx.fillText("||", 285, 794); + } + + ctx.fillText("|", 470, 797); + ctx.fillText("▶", 450, 800); + ctx.fillText("音量", 350, 900); + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(700, 1000); + ctx.stroke(); + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 9; + ctx.fillStyle = "rgba(255,255,255,0.5)"; + + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(600 * audio.volume + 100, 1000); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(600 * audio.volume + 100, 1000, 10, 0, 2 * Math.PI); + ctx.fill(); + core.fillBoldText1( + ctx, + Math.floor(100 * audio.volume), + 720, + 1010, + "#FFFFFF", + "#000000", + 6, + core.ui._buildFont(32, true) + ); + const img = core.material.images.images[this.type + ".webp"]; + if (img) ctx.drawImage(img, 580, 730, 100, 100); + core.setTextAlign(ctx, "center"); + ctx.font = "bold 48px Verdana"; + ctx.fillText("当前歌曲", 400, 297); + ctx.fillText( + this.musicname[this.musicMx[this.selection[0]][this.selection[1]]], + 400, + 397 + ); + + ctx.font = "bold 36px Verdana"; + const thistime = audio.currentTime; + + if (thistime) { + const timetext = + Math.floor(thistime / 60) + .toString() + .padStart(2, "0") + + ":" + + Math.floor(thistime % 60) + .toString() + .padStart(2, "0"); + ctx.fillText(timetext, 510, 650); + } else { + const timetext = "00:00"; + ctx.fillText(timetext, 510, 650); + } + ctx.fillText("/", 580, 650); + const fulltime = audio.duration; + + if (fulltime) { + const timetext = + Math.floor(fulltime / 60) + .toString() + .padStart(2, "0") + + ":" + + Math.floor(fulltime % 60) + .toString() + .padStart(2, "0"); + ctx.fillText(timetext, 650, 650); + } else { + const timetext = "00:00"; + ctx.fillText(timetext, 650, 650); + } + ctx.strokeStyle = "#ffffff"; + ctx.lineWidth = 9; + ctx.fillStyle = "rgba(255,255,255,0.5)"; + const pointx = (600 * thistime) / fulltime + 100; + if (fulltime && thistime) { + ctx.beginPath(); + ctx.moveTo(100, 600); + ctx.lineTo(pointx, 600); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(pointx, 600, 10, 0, 2 * Math.PI); + ctx.fill(); + } else { + ctx.beginPath(); + ctx.arc(100, 600, 10, 0, 2 * Math.PI); + ctx.fill(); + } + } + } + } + core.ui.music = new musicclass(); + main.dom.musicMode.onclick = function () { + //点击开始页面的CG MODE进入cg回廊 + main.core.control.checkBgm(); + main.core.control.pauseBgm(); + audio.src = + "project/bgms/" + + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ]; + const arr = main.core.ui.music.musicMx.flat(Infinity); + main.core.ui.music.randomList = shuffle(arr); + main.core.ui.music.random = main.core.ui.music.randomList.indexOf( + main.core.ui.music.musicMx[main.core.ui.music.selection[0]][ + main.core.ui.music.selection[1] + ] + ); + page = 0; + music.style.display = "block"; + let time = 0; + core.registerAnimationFrame("music", null, (temptime) => { + if (temptime > time + 1000 / 60) { + time = temptime; + main.core.ui.music.update(); + } + }); + }; + }, + 横屏切换: function () { // 在此增加新插件 this.triggerFullscreen = async function (full) { if (!!document.fullscreenElement && !full) { @@ -15247,181 +15390,229 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = } }; }, - "图片压缩webp导出": function () { - // 在此增加新插件 - //使用方法:进入游戏后开始游戏,F12打开控制台,输入core.towebp(image),image为已在全塔属性中注册过的图片名字,需要""括起来 - this.towebp = function (image) { - const canvas = document.createElement("canvas"); //背景画布设置 - const ctx = canvas.getContext("2d"); - const img = core.material.images.images[image]; - canvas.width = img.width; - canvas.height = img.height; - ctx.drawImage(img, 0, 0); - const webpDataURL = canvas.toDataURL("image/webp", 0.85); //第二个参数为画面质量,范围为0-1,1为无损 - console.log(webpDataURL); - const link = document.createElement("a"); - link.href = webpDataURL; - const name = image.substring(0, image.indexOf(".")); - link.download = name + ".webp"; - link.click(); - }; - this.towebpall = function () { - const canvas = document.createElement("canvas"); //背景画布设置 - const ctx = canvas.getContext("2d"); - for (const image in core.material.images.images) { - this.towebp(image); - } - }; - this.towebpsome = function (images) { - images.forEach((image) => { - core.towebp(image); - }); - }; -}, - "帧动画特效(游戏界面)": function () { - // 在此增加新插件 - const animate2 = document.createElement("canvas"); - animate2.style.zIndex = 71; - animate2.id = "animate2"; - animate2.classList.add('gameCanvas', 'anti-aliasing') - animate2.style.display = "block" - animate2.width = 416 - animate2.height = 416 - animate2.style.width = core.__PIXELS__ * core.domStyle.scale + 'px' - animate2.style.height = core.__PIXELS__ * core.domStyle.scale + 'px' - main.dom.animate2 = animate2; - const anctx = animate2.getContext('2d') + 图片压缩webp导出: function () { + // 在此增加新插件 + //使用方法:进入游戏后开始游戏,F12打开控制台,输入core.towebp(image),image为已在全塔属性中注册过的图片名字,需要""括起来 + this.towebp = function (image) { + const canvas = document.createElement("canvas"); //背景画布设置 + const ctx = canvas.getContext("2d"); + const img = core.material.images.images[image]; + canvas.width = img.width; + canvas.height = img.height; + ctx.drawImage(img, 0, 0); + const webpDataURL = canvas.toDataURL("image/webp", 0.85); //第二个参数为画面质量,范围为0-1,1为无损 + console.log(webpDataURL); + const link = document.createElement("a"); + link.href = webpDataURL; + const name = image.substring(0, image.indexOf(".")); + link.download = name + ".webp"; + link.click(); + }; + this.towebpall = function () { + const canvas = document.createElement("canvas"); //背景画布设置 + const ctx = canvas.getContext("2d"); + for (const image in core.material.images.images) { + this.towebp(image); + } + }; + this.towebpsome = function (images) { + images.forEach((image) => { + core.towebp(image); + }); + }; + }, + "帧动画特效(游戏界面)": function () { + // 在此增加新插件 + const animate2 = document.createElement("canvas"); //画布设置 + animate2.style.zIndex = 71; + animate2.id = "animate2"; + animate2.classList.add("gameCanvas", "anti-aliasing"); + animate2.style.display = "block"; + animate2.width = 416; + animate2.height = 416; + animate2.style.width = core.__PIXELS__ * core.domStyle.scale + "px"; + animate2.style.height = core.__PIXELS__ * core.domStyle.scale + "px"; + main.dom.animate2 = animate2; + const anctx = animate2.getContext("2d"); - main.dom.gameDraw.appendChild(animate2); + main.dom.gameDraw.appendChild(animate2); - core.plugin.playing = new Set() + core.plugin.playing = new Set(); - this.setanimate = function (name, - px, - py, - width, - height, - allFarme, - imageList, - soundList) { - const data = { - px: px, - py: py, - width: width, - height: height, - allFarme: allFarme, - imageList: imageList, - soundList: soundList - } - core.setFlag("animate_" + name, data) + this.setanimate = function ( + name, + px, + py, + width, + height, + allFarme, + imageList, + soundList + ) { + const data = { + px: px, + py: py, + width: width, + height: height, + allFarme: allFarme, + imageList: imageList, + soundList: soundList, + }; + core.setFlag("animate_" + name, data); + }; + this.deleteanimate = function (name) { + core.setFlag("animate_" + name); + }; + let thistime = 0; + this.playanimate = function (name, x, y, hero, scalex, scaley) { + const data = { + name: name, + x: x, + y: y, + hero: hero, + scalex: scalex, + scaley: scaley, + farme: 0, + }; - } - this.deleteanimate = function (name) { - core.setFlag("animate_" + name) + core.plugin.playing.add(data); + }; + core.registerAnimationFrame("animateonmap", true, function (timestamp) { + if (timestamp - thistime > 1000 / 60) { + thistime = timestamp; + core.clearMap(anctx); + core.plugin.playing.forEach((one) => { + const data = flags["animate_" + one.name]; + if (!data) { + core.plugin.playing.delete(one); + } else { + data.imageList.forEach(function (image) { + if ( + one.farme >= (image.beforefarme ?? 0) && + one.farme <= (image.afterfarme ?? data.allFarme) + ) { + const img = core.material.images.images?.[image.image]; + if (img) { + const gla = image.globalAlpha ?? 100; + const agla = image.aglobalAlpha ?? gla, + beforefarme = image.beforefarme ?? 0; + const afterfarme = image.afterfarme ?? data.allFarme; - } - let thistime = 0 - this.playanimate = function (name, x, y, hero, scalex, scaley) { - const data = { name: name, x: x, y: y, hero: hero, scalex: scalex, scaley: scaley, farme: 0 } + anctx.globalAlpha = + (gla + + ((agla - gla) * (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1)) / + 100; - core.plugin.playing.add(data) - - } - core.registerAnimationFrame("animateonmap", true, function (timestamp) { - if (timestamp - thistime > 1000 / 60) { - thistime = timestamp; - core.clearMap(anctx) - core.plugin.playing.forEach(one => { - const data = flags["animate_" + one.name] - if (!data) { - core.plugin.playing.delete(one) - } else { - data.imageList.forEach(function (image) { - if (one.farme >= (image.beforefarme ?? 0) && - one.farme <= (image.afterfarme ?? data.allFarme) - ) { - const img = core.material.images.images?.[image.image]; - if (img) { - const gla = image.globalAlpha ?? 100; - const agla = image.aglobalAlpha ?? gla, - beforefarme = image.beforefarme ?? 0; - const afterfarme = image.afterfarme ?? data.allFarme; - - anctx.globalAlpha = - (gla + - ((agla - gla) * (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1)) / - 100; - - const cx = - (image.cx ?? 0) + - (((image.acx ?? 0) - (image.cx ?? 0)) * - (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1), - cy = - (image.cy ?? 0) + - (((image.acy ?? 0) - (image.cy ?? 0)) * - (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1), - cw = - (image.cw ?? img.width) + - (((image.acw ?? img.width) - (image.cw ?? img.width)) * - (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1), - ch = - (image.ch ?? img.height) + - (((image.acw ?? img.height) - (image.cw ?? img.height)) * - (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1), - x = - (image.x ?? 0) + - (((image.ax ?? 0) - (image.x ?? 0)) * (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1), - y = - (image.y ?? 0) + - (((image.ay ?? 0) - (image.y ?? 0)) * (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1), - w = - (image.w ?? one.width) + - (((image.aw ?? one.width) - (image.w ?? one.width)) * - (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1), - h = - (image.h ?? one.height) + - (((image.aw ?? one.height) - (image.w ?? one.height)) * - (one.farme - beforefarme)) / - (afterfarme - beforefarme || 1), - angle = (Math.PI * (image.angel ?? 0) / 180) + ((Math.PI * (image.aangel ?? 0) / 180) - ((Math.PI * (image.angel ?? 0) / 180)) * (one.farme - beforefarme)) / (afterfarme - beforefarme || 1); - if (one.hero) { - let sx, sy; - if (core.status.heroMoving < 0) { - sx = 0; - sy = 0 - } else { - sx = core.utils.scan[core.status.hero.loc.direction].x * 4 * core.status.heroMoving - sy = core.utils.scan[core.status.hero.loc.direction].y * 4 * core.status.heroMoving - } - const herox = core.status.hero.loc.x * 32 + 16 + sx - const heroy = core.status.hero.loc.y * 32 + 16 + sy - core.drawImage(anctx, img, cx, cy, cw, ch, herox + (x - data.px) * one.scalex, heroy + (y - data.py) * one.scaley, w * one.scalex, h * one.scaley, angle) - } else { core.drawImage(anctx, img, cx, cy, cw, ch, one.x + (x - data.px) * one.scalex, one.y + (y - data.py) * one.scaley, w * one.scalex, h * one.scaley, angle); } - } - } - }) - data.soundList.forEach(function (sound) { - const lisen = sound.sound && core.material.sounds[sound.sound] && core.musicStatus.soundStatus; - if (one.farme == sound.startfarme && lisen) { - if (sound.stopbefore) core.stopSound(); - core.playSound(sound.sound); - } - }) - one.farme++; - if (one.farme > data.allFarme) core.plugin.playing.delete(one) - } - }) - } - - }) - -} -} \ No newline at end of file + const cx = + (image.cx ?? 0) + + (((image.acx ?? 0) - (image.cx ?? 0)) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1), + cy = + (image.cy ?? 0) + + (((image.acy ?? 0) - (image.cy ?? 0)) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1), + cw = + (image.cw ?? img.width) + + (((image.acw ?? img.width) - (image.cw ?? img.width)) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1), + ch = + (image.ch ?? img.height) + + (((image.acw ?? img.height) - (image.cw ?? img.height)) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1), + x = + (image.x ?? 0) + + (((image.ax ?? 0) - (image.x ?? 0)) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1), + y = + (image.y ?? 0) + + (((image.ay ?? 0) - (image.y ?? 0)) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1), + w = + (image.w ?? one.width) + + (((image.aw ?? one.width) - (image.w ?? one.width)) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1), + h = + (image.h ?? one.height) + + (((image.aw ?? one.height) - (image.w ?? one.height)) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1), + angle = + (Math.PI * (image.angel ?? 0)) / 180 + + ((Math.PI * (image.aangel ?? 0)) / 180 - + ((Math.PI * (image.angel ?? 0)) / 180) * + (one.farme - beforefarme)) / + (afterfarme - beforefarme || 1); + if (one.hero) { + let sx, sy; + if (core.status.heroMoving < 0) { + sx = 0; + sy = 0; + } else { + sx = + core.utils.scan[core.status.hero.loc.direction].x * + 4 * + core.status.heroMoving; + sy = + core.utils.scan[core.status.hero.loc.direction].y * + 4 * + core.status.heroMoving; + } + const herox = core.status.hero.loc.x * 32 + 16 + sx; + const heroy = core.status.hero.loc.y * 32 + 16 + sy; + core.drawImage( + anctx, + img, + cx, + cy, + cw, + ch, + herox + (x - data.px) * one.scalex, + heroy + (y - data.py) * one.scaley, + w * one.scalex, + h * one.scaley, + angle + ); + } else { + core.drawImage( + anctx, + img, + cx, + cy, + cw, + ch, + one.x + (x - data.px) * one.scalex, + one.y + (y - data.py) * one.scaley, + w * one.scalex, + h * one.scaley, + angle + ); + } + } + } + }); + data.soundList.forEach(function (sound) { + const lisen = + sound.sound && + core.material.sounds[sound.sound] && + core.musicStatus.soundStatus; + if (one.farme == sound.startfarme && lisen) { + if (sound.stopbefore) core.stopSound(); + core.playSound(sound.sound); + } + }); + one.farme++; + if (one.farme > data.allFarme) core.plugin.playing.delete(one); + } + }); + } + }); + }, +}; diff --git a/project/sounds/aiy020000005.mp3 b/project/sounds/aiy020000005.mp3 new file mode 100644 index 0000000..c564818 Binary files /dev/null and b/project/sounds/aiy020000005.mp3 differ diff --git a/project/sounds/aiy020000010.mp3 b/project/sounds/aiy020000010.mp3 new file mode 100644 index 0000000..850eefe Binary files /dev/null and b/project/sounds/aiy020000010.mp3 differ diff --git a/project/sounds/aiy020000020.mp3 b/project/sounds/aiy020000020.mp3 new file mode 100644 index 0000000..0290dac Binary files /dev/null and b/project/sounds/aiy020000020.mp3 differ diff --git a/project/sounds/aiy020000030.mp3 b/project/sounds/aiy020000030.mp3 new file mode 100644 index 0000000..a907ca7 Binary files /dev/null and b/project/sounds/aiy020000030.mp3 differ diff --git a/project/sounds/aiy020000040.mp3 b/project/sounds/aiy020000040.mp3 new file mode 100644 index 0000000..0b2b894 Binary files /dev/null and b/project/sounds/aiy020000040.mp3 differ diff --git a/project/sounds/aiy020000050.mp3 b/project/sounds/aiy020000050.mp3 new file mode 100644 index 0000000..dc53397 Binary files /dev/null and b/project/sounds/aiy020000050.mp3 differ diff --git a/project/sounds/aiy020000060.mp3 b/project/sounds/aiy020000060.mp3 new file mode 100644 index 0000000..64e8e2f Binary files /dev/null and b/project/sounds/aiy020000060.mp3 differ diff --git a/project/sounds/aiy020000070.mp3 b/project/sounds/aiy020000070.mp3 new file mode 100644 index 0000000..a6dc7b2 Binary files /dev/null and b/project/sounds/aiy020000070.mp3 differ diff --git a/project/sounds/aiy020000080.mp3 b/project/sounds/aiy020000080.mp3 new file mode 100644 index 0000000..b3b7b81 Binary files /dev/null and b/project/sounds/aiy020000080.mp3 differ diff --git a/project/sounds/aiy020000090.mp3 b/project/sounds/aiy020000090.mp3 new file mode 100644 index 0000000..9680e84 Binary files /dev/null and b/project/sounds/aiy020000090.mp3 differ diff --git a/project/sounds/aiy020000100.mp3 b/project/sounds/aiy020000100.mp3 new file mode 100644 index 0000000..74349d9 Binary files /dev/null and b/project/sounds/aiy020000100.mp3 differ diff --git a/project/sounds/aiy020000110.mp3 b/project/sounds/aiy020000110.mp3 new file mode 100644 index 0000000..9c1625b Binary files /dev/null and b/project/sounds/aiy020000110.mp3 differ diff --git a/project/sounds/aiy020000120.mp3 b/project/sounds/aiy020000120.mp3 new file mode 100644 index 0000000..e8accbe Binary files /dev/null and b/project/sounds/aiy020000120.mp3 differ diff --git a/project/sounds/aiy020000130.mp3 b/project/sounds/aiy020000130.mp3 new file mode 100644 index 0000000..4d33949 Binary files /dev/null and b/project/sounds/aiy020000130.mp3 differ diff --git a/project/sounds/aiy020000140.mp3 b/project/sounds/aiy020000140.mp3 new file mode 100644 index 0000000..b207d11 Binary files /dev/null and b/project/sounds/aiy020000140.mp3 differ diff --git a/project/sounds/aiy020000150.mp3 b/project/sounds/aiy020000150.mp3 new file mode 100644 index 0000000..d652629 Binary files /dev/null and b/project/sounds/aiy020000150.mp3 differ diff --git a/project/sounds/aiy020000160.mp3 b/project/sounds/aiy020000160.mp3 new file mode 100644 index 0000000..317fd3c Binary files /dev/null and b/project/sounds/aiy020000160.mp3 differ diff --git a/project/sounds/aiy020000170.mp3 b/project/sounds/aiy020000170.mp3 new file mode 100644 index 0000000..f82fb9e Binary files /dev/null and b/project/sounds/aiy020000170.mp3 differ diff --git a/project/sounds/aiy020000180.mp3 b/project/sounds/aiy020000180.mp3 new file mode 100644 index 0000000..e41d74c Binary files /dev/null and b/project/sounds/aiy020000180.mp3 differ diff --git a/project/sounds/aiy310000130.mp3 b/project/sounds/aiy310000130.mp3 new file mode 100644 index 0000000..e643d89 Binary files /dev/null and b/project/sounds/aiy310000130.mp3 differ diff --git a/project/sounds/aiy310000140.mp3 b/project/sounds/aiy310000140.mp3 new file mode 100644 index 0000000..e647175 Binary files /dev/null and b/project/sounds/aiy310000140.mp3 differ diff --git a/project/sounds/aiy310000150.mp3 b/project/sounds/aiy310000150.mp3 new file mode 100644 index 0000000..5d64a1d Binary files /dev/null and b/project/sounds/aiy310000150.mp3 differ diff --git a/project/sounds/aiy310000160.mp3 b/project/sounds/aiy310000160.mp3 new file mode 100644 index 0000000..24ec45b Binary files /dev/null and b/project/sounds/aiy310000160.mp3 differ diff --git a/project/sounds/aiy310000170.mp3 b/project/sounds/aiy310000170.mp3 new file mode 100644 index 0000000..5c1950a Binary files /dev/null and b/project/sounds/aiy310000170.mp3 differ diff --git a/project/sounds/aiy310000180.mp3 b/project/sounds/aiy310000180.mp3 new file mode 100644 index 0000000..6fbf8f1 Binary files /dev/null and b/project/sounds/aiy310000180.mp3 differ diff --git a/project/sounds/aiy310000190.mp3 b/project/sounds/aiy310000190.mp3 new file mode 100644 index 0000000..06e7906 Binary files /dev/null and b/project/sounds/aiy310000190.mp3 differ diff --git a/project/sounds/aiy310000200.mp3 b/project/sounds/aiy310000200.mp3 new file mode 100644 index 0000000..68d714d Binary files /dev/null and b/project/sounds/aiy310000200.mp3 differ diff --git a/project/sounds/aiy310000210.mp3 b/project/sounds/aiy310000210.mp3 new file mode 100644 index 0000000..f1d7e95 Binary files /dev/null and b/project/sounds/aiy310000210.mp3 differ diff --git a/project/sounds/aiy310000220.mp3 b/project/sounds/aiy310000220.mp3 new file mode 100644 index 0000000..4fc534d Binary files /dev/null and b/project/sounds/aiy310000220.mp3 differ diff --git a/project/sounds/aiy310000230.mp3 b/project/sounds/aiy310000230.mp3 new file mode 100644 index 0000000..57f5059 Binary files /dev/null and b/project/sounds/aiy310000230.mp3 differ diff --git a/project/sounds/aiy310000240.mp3 b/project/sounds/aiy310000240.mp3 new file mode 100644 index 0000000..c9d29ee Binary files /dev/null and b/project/sounds/aiy310000240.mp3 differ diff --git a/project/sounds/aiy310000250.mp3 b/project/sounds/aiy310000250.mp3 new file mode 100644 index 0000000..37346d0 Binary files /dev/null and b/project/sounds/aiy310000250.mp3 differ diff --git a/project/sounds/aiy310000260.mp3 b/project/sounds/aiy310000260.mp3 new file mode 100644 index 0000000..b547f31 Binary files /dev/null and b/project/sounds/aiy310000260.mp3 differ diff --git a/project/sounds/aiy310000280.mp3 b/project/sounds/aiy310000280.mp3 new file mode 100644 index 0000000..d7ad3e9 Binary files /dev/null and b/project/sounds/aiy310000280.mp3 differ diff --git a/project/sounds/aiy310000290.mp3 b/project/sounds/aiy310000290.mp3 new file mode 100644 index 0000000..2380de7 Binary files /dev/null and b/project/sounds/aiy310000290.mp3 differ diff --git a/project/sounds/aiy310000300.mp3 b/project/sounds/aiy310000300.mp3 new file mode 100644 index 0000000..c171f56 Binary files /dev/null and b/project/sounds/aiy310000300.mp3 differ