Update to v2.10.3 [Enhance] map local restrict

- Add support for locally restricting songs or challenges in the map of world mode
This commit is contained in:
Lost-MSth
2023-01-26 21:15:09 +08:00
parent 9fbdcd5edb
commit fbd5d83626
10 changed files with 191 additions and 120 deletions

View File

@@ -73,17 +73,17 @@ It is just so interesting. What it can do is under exploration.
>
> Tips: When updating, please keep the original database in case of data loss.
### Version 2.10.2
### Version 2.10.3
- 适用于Arcaea 4.1.7版本 For Arcaea 4.1.7
- 新搭档 **红(冬日** 已解锁 Unlock the character **Kou(Winter)**.
-增记录数据库来记录全部的游玩历史分数 Add a log database to record all playing scores.
- 新增设置选项可选择阻止或接受unranked成绩 Add a config option that can be used to forbid unranked scores.
- 为自定义异常添加简明的warning日志 Add brief warning logs for custom exceptions.
- 修复flask应用启动前出现异常日志无法正确地指出异常的问题 Fix a bug that if an exception is raised before flask app runs, logger will not work well.
- 现在初始化文件中JSON文件可以是模块支持的其它编码格式 Now initial files can be other encoding types which are supported by JSON module.
- `run.bat`在报错时会停下而不是一闪而过了 Make the `run.bat` script pause when meeting an error. #82
- 新增API接口查询单谱排行 Add an API endpoint for getting the rank list of a song's chart. #81
- 适用于Arcaea 4.2.0版本 For Arcaea 4.2.0
- 新搭档 **拉格兰Aria** 已解锁 Unlock the character **Lagrange(Aria)**. (Lack of its values)
-搭档 **忘却Apophenia** 已解锁 Unlock the character **Lethe(Apophenia)**.
- 新增选项取消歌曲文件哈希预计算 Add an option to disable song file hash pre-calculation.
- 新增对世界模式中地图本地限制歌曲解锁或挑战解锁以及地图中台阶上限制歌曲难度的支持 Add support for restricting songs' difficulty in the map's steps of world mode and locally restricting unlocking songs or challenges in the map of world mode.
- 恢复使用云存档覆盖成绩的功能 Restore the feature that cloud save can be used to cover best scores.
- 捕获`Authorization`不在请求头导致的报错 Capture error that the request does not have `Authorization` in header.
- 修复客户端版本校验中请求头不存在`AppVersion`也能通过校验的逻辑错误 Fix a bug that headers without `AppVersion` are allowed in client version checking.
- 新增增删改歌曲信息的API接口 Add some API endpoints, including creating, changing, deleting song info.
## 运行环境与依赖 Running environment and requirements

View File

@@ -1,6 +1,7 @@
from core.error import ArcError
from flask import jsonify
from core.error import ArcError
default_error = ArcError('Unknown Error')

View File

@@ -1,8 +1,9 @@
from core.error import DataExist, NoData, InputError
from flask import Blueprint, request
from core.error import DataExist, InputError, NoData
from core.rank import RankList
from core.song import Song
from core.sql import Connect, Query, Sql
from flask import Blueprint, request
from .api_auth import api_try, request_json_handle, role_required
from .api_code import success_return

View File

@@ -1,6 +1,6 @@
from .config_manager import Config
ARCAEA_SERVER_VERSION = 'v2.10.2'
ARCAEA_SERVER_VERSION = 'v2.10.3'
class Constant:

View File

@@ -22,6 +22,8 @@ class Purchase:
self.items: list = []
# TODO: "discount_reason": "extend"
@property
def price_displayed(self) -> int:
'''

View File

@@ -106,7 +106,7 @@ class Map:
self.available_from: int = None
self.available_to: int = None
self.is_repeatable: bool = None
self.require_id: str = None
self.require_id: 'str | list[str]' = None
self.require_type: str = None
self.require_value: int = None
self.coordinate: str = None
@@ -115,6 +115,9 @@ class Map:
self.steps: list = []
self.__rewards: list = None
self.require_localunlock_songid: str = None
self.require_localunlock_challengeid: str = None
@property
def rewards(self) -> list:
if self.__rewards is None:
@@ -155,6 +158,8 @@ class Map:
'custom_bg': self.custom_bg,
'stamina_cost': self.stamina_cost,
'step_count': self.step_count,
'require_localunlock_songid': self.require_localunlock_songid,
'require_localunlock_challengeid': self.require_localunlock_challengeid,
'steps': [s.to_dict() for s in self.steps],
}
@@ -174,6 +179,8 @@ class Map:
self.coordinate = raw_dict.get('coordinate')
self.custom_bg = raw_dict.get('custom_bg', '')
self.stamina_cost = raw_dict.get('stamina_cost')
self.require_localunlock_songid = raw_dict.get('require_localunlock_songid', '')
self.require_localunlock_challengeid = raw_dict.get('require_localunlock_challengeid', '')
self.steps = [Step().from_dict(s) for s in raw_dict.get('steps')]
return self

View File

@@ -1,24 +1,24 @@
class InitData:
char = ['hikari', 'tairitsu', 'kou', 'sapphire', 'lethe', 'hikari&tairitsu(reunion)', 'Tairitsu(Axium)', 'Tairitsu(Grievous Lady)', 'stella', 'Hikari & Fisica', 'ilith', 'eto', 'luna', 'shirabe', 'Hikari(Zero)', 'Hikari(Fracture)', 'Hikari(Summer)', 'Tairitsu(Summer)', 'Tairitsu & Trin',
'ayu', 'Eto & Luna', 'yume', 'Seine & Hikari', 'saya', 'Tairitsu & Chuni Penguin', 'Chuni Penguin', 'haruna', 'nono', 'MTA-XXX', 'MDA-21', 'kanae', 'Hikari(Fantasia)', 'Tairitsu(Sonata)', 'sia', 'DORO*C', 'Tairitsu(Tempest)', 'brillante', 'Ilith(Summer)', 'etude', 'Alice & Tenniel', 'Luna & Mia', 'areus', 'seele', 'isabelle', 'mir', 'lagrange', 'linka', 'nami', 'Saya & Elizabeth', 'lily', 'kanae(midsummer)', 'alice&tenniel(minuet)', 'tairitsu(elegy)', 'marija', 'vita', 'hikari(fatalis)', 'saki', 'setsuna', 'amane', 'kou(winter)']
'ayu', 'Eto & Luna', 'yume', 'Seine & Hikari', 'saya', 'Tairitsu & Chuni Penguin', 'Chuni Penguin', 'haruna', 'nono', 'MTA-XXX', 'MDA-21', 'kanae', 'Hikari(Fantasia)', 'Tairitsu(Sonata)', 'sia', 'DORO*C', 'Tairitsu(Tempest)', 'brillante', 'Ilith(Summer)', 'etude', 'Alice & Tenniel', 'Luna & Mia', 'areus', 'seele', 'isabelle', 'mir', 'lagrange', 'linka', 'nami', 'Saya & Elizabeth', 'lily', 'kanae(midsummer)', 'alice&tenniel(minuet)', 'tairitsu(elegy)', 'marija', 'vita', 'hikari(fatalis)', 'saki', 'setsuna', 'amane', 'kou(winter)', 'lagrange(aria)', 'lethe(apophenia)']
skill_id = ['gauge_easy', '', '', '', 'note_mirror', 'skill_reunion', '', 'gauge_hard', 'frag_plus_10_pack_stellights', 'gauge_easy|frag_plus_15_pst&prs', 'gauge_hard|fail_frag_minus_100', 'frag_plus_5_side_light', 'visual_hide_hp', 'frag_plus_5_side_conflict', 'challenge_fullcombo_0gauge', 'gauge_overflow', 'gauge_easy|note_mirror', 'note_mirror', 'visual_tomato_pack_tonesphere',
'frag_rng_ayu', 'gaugestart_30|gaugegain_70', 'combo_100-frag_1', 'audio_gcemptyhit_pack_groovecoaster', 'gauge_saya', 'gauge_chuni', 'kantandeshou', 'gauge_haruna', 'frags_nono', 'gauge_pandora', 'gauge_regulus', 'omatsuri_daynight', '', '', 'sometimes(note_mirror|frag_plus_5)', 'scoreclear_aa|visual_scoregauge', 'gauge_tempest', 'gauge_hard', 'gauge_ilith_summer', '', 'note_mirror|visual_hide_far', 'frags_ongeki', 'gauge_areus', 'gauge_seele', 'gauge_isabelle', 'gauge_exhaustion', 'skill_lagrange', 'gauge_safe_10', 'frags_nami', 'skill_elizabeth', 'skill_lily', 'skill_kanae_midsummer', '', '', 'visual_ghost_skynotes', 'skill_vita', 'skill_fatalis', 'frags_ongeki_slash', 'frags_ongeki_hard', 'skill_amane', 'skill_kou_winter']
'frag_rng_ayu', 'gaugestart_30|gaugegain_70', 'combo_100-frag_1', 'audio_gcemptyhit_pack_groovecoaster', 'gauge_saya', 'gauge_chuni', 'kantandeshou', 'gauge_haruna', 'frags_nono', 'gauge_pandora', 'gauge_regulus', 'omatsuri_daynight', '', '', 'sometimes(note_mirror|frag_plus_5)', 'scoreclear_aa|visual_scoregauge', 'gauge_tempest', 'gauge_hard', 'gauge_ilith_summer', '', 'note_mirror|visual_hide_far', 'frags_ongeki', 'gauge_areus', 'gauge_seele', 'gauge_isabelle', 'gauge_exhaustion', 'skill_lagrange', 'gauge_safe_10', 'frags_nami', 'skill_elizabeth', 'skill_lily', 'skill_kanae_midsummer', '', '', 'visual_ghost_skynotes', 'skill_vita', 'skill_fatalis', 'frags_ongeki_slash', 'frags_ongeki_hard', 'skill_amane', 'skill_kou_winter', '', 'gauge_hard|note_mirror']
skill_id_uncap = ['', '', 'frags_kou', '', 'visual_ink', '', '', '', '', '', '', 'eto_uncap', 'luna_uncap', 'shirabe_entry_fee',
'', '', '', '', '', 'ayu_uncap', '', 'frags_yume', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
'', '', '', '', '', 'ayu_uncap', '', 'frags_yume', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
skill_unlock_level = [0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 0, 0, 0, 0, 0,
0, 0, 0, 8, 0, 14, 0, 0, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 0, 0, 0]
0, 0, 0, 8, 0, 14, 0, 0, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 8, 0, 0, 0, 0, 0]
frag1 = [55, 55, 60, 50, 47, 79, 47, 57, 41, 22, 50, 54, 60, 56, 78, 42, 41, 61, 52, 50, 52, 32,
42, 55, 45, 58, 43, 0.5, 68, 50, 62, 45, 45, 52, 44, 27, 59, 0, 45, 50, 50, 47, 47, 61, 43, 42, 38, 25, 58, 50, 61, 45, 45, 38, 34, 27, 18, 56, 47, 30]
42, 55, 45, 58, 43, 0.5, 68, 50, 62, 45, 45, 52, 44, 27, 59, 0, 45, 50, 50, 47, 47, 61, 43, 42, 38, 25, 58, 50, 61, 45, 45, 38, 34, 27, 18, 56, 47, 30, 0, 57]
prog1 = [35, 55, 47, 50, 60, 70, 60, 70, 58, 45, 70, 45, 42, 46, 61, 67, 49, 44, 28, 45, 24, 46, 52,
59, 62, 33, 58, 25, 63, 69, 50, 45, 45, 51, 34, 70, 62, 70, 45, 32, 32, 61, 47, 47, 37, 42, 50, 50, 45, 41, 61, 45, 45, 58, 50, 130, 18, 57, 55, 50]
59, 62, 33, 58, 25, 63, 69, 50, 45, 45, 51, 34, 70, 62, 70, 45, 32, 32, 61, 47, 47, 37, 42, 50, 50, 45, 41, 61, 45, 45, 58, 50, 130, 18, 57, 55, 50, 0, 70]
overdrive1 = [35, 55, 25, 50, 47, 70, 72, 57, 41, 7, 10, 32, 65, 31, 61, 53, 31, 47, 38, 12, 39, 18,
48, 65, 45, 55, 44, 25, 46, 44, 33, 45, 45, 37, 25, 27, 50, 20, 45, 63, 21, 47, 61, 47, 65, 80, 38, 30, 49, 15, 34, 45, 45, 38, 67, 120, 44, 33, 55, 50]
48, 65, 45, 55, 44, 25, 46, 44, 33, 45, 45, 37, 25, 27, 50, 20, 45, 63, 21, 47, 61, 47, 65, 80, 38, 30, 49, 15, 34, 45, 45, 38, 67, 120, 44, 33, 55, 50, 0, 57]
frag20 = [78, 80, 90, 75, 70, 79, 70, 79, 65, 40, 50, 80, 90, 82, 0, 61, 67, 92, 85, 50, 86, 52,
65, 85, 67, 88, 64, 0.5, 95, 70, 95, 50, 80, 87, 71, 50, 85, 0, 80, 75, 50, 70, 70, 90, 65, 80, 61, 50, 68, 60, 90, 67, 50, 60, 51, 50, 35, 85, 47, 50]
@@ -64,7 +64,7 @@ class InitData:
'core_ambivalent', 'core_scarlet', 'core_groove', 'core_generic', 'core_binary', 'core_colorful', 'core_course_skip_purchase']
world_songs = ["babaroque", "shadesoflight", "kanagawa", "lucifer", "anokumene", "ignotus", "rabbitintheblackroom", "qualia", "redandblue", "bookmaker", "darakunosono", "espebranch", "blacklotus", "givemeanightmare", "vividtheory", "onefr", "gekka", "vexaria3", "infinityheaven3", "fairytale3", "goodtek3", "suomi", "rugie", "faintlight", "harutopia", "goodtek", "dreaminattraction", "syro", "diode", "freefall", "grimheart", "blaster",
"cyberneciacatharsis", "monochromeprincess", "revixy", "vector", "supernova", "nhelv", "purgatorium3", "dement3", "crossover", "guardina", "axiumcrisis", "worldvanquisher", "sheriruth", "pragmatism", "gloryroad", "etherstrike", "corpssansorganes", "lostdesire", "blrink", "essenceoftwilight", "lapis", "solitarydream", "lumia3", "purpleverse", "moonheart3", "glow", "enchantedlove", "take", "lifeispiano", "vandalism", "nexttoyou3", "lostcivilization3", "turbocharger", "bookmaker3", "laqryma3", "kyogenkigo", "hivemind", "seclusion", "quonwacca3", "bluecomet", "energysynergymatrix", "gengaozo", "lastendconductor3", "antithese3", "qualia3", "kanagawa3", "heavensdoor3", "pragmatism3", "nulctrl", "avril", "ddd", "merlin3", "omakeno3", "nekonote", "sanskia", 'altair', 'mukishitsu', 'trapcrow', 'redandblue3', 'ignotus3', 'singularity3', 'dropdead3', 'arcahv', 'freefall3', 'partyvinyl3']
"cyberneciacatharsis", "monochromeprincess", "revixy", "vector", "supernova", "nhelv", "purgatorium3", "dement3", "crossover", "guardina", "axiumcrisis", "worldvanquisher", "sheriruth", "pragmatism", "gloryroad", "etherstrike", "corpssansorganes", "lostdesire", "blrink", "essenceoftwilight", "lapis", "solitarydream", "lumia3", "purpleverse", "moonheart3", "glow", "enchantedlove", "take", "lifeispiano", "vandalism", "nexttoyou3", "lostcivilization3", "turbocharger", "bookmaker3", "laqryma3", "kyogenkigo", "hivemind", "seclusion", "quonwacca3", "bluecomet", "energysynergymatrix", "gengaozo", "lastendconductor3", "antithese3", "qualia3", "kanagawa3", "heavensdoor3", "pragmatism3", "nulctrl", "avril", "ddd", "merlin3", "omakeno3", "nekonote", "sanskia", 'altair', 'mukishitsu', 'trapcrow', 'redandblue3', 'ignotus3', 'singularity3', 'dropdead3', 'arcahv', 'freefall3', 'partyvinyl3', 'tsukinimurakumo', 'mantis', 'worldfragments', 'astrawalkthrough', 'chronicle']
world_unlocks = ["scenery_chap1", "scenery_chap2",
"scenery_chap3", "scenery_chap4", "scenery_chap5", "scenery_chap6", "scenery_chap7"]

View File

@@ -327,11 +327,10 @@
"is_available": true
}
],
"price": 0,
"price": 700,
"orig_price": 700,
"discount_from": 1646784000000,
"discount_to": 1647388799000,
"discount_reason": "extend"
"discount_to": 1647388799000
},
{
"name": "alice",
@@ -595,6 +594,11 @@
"id": "finale",
"is_available": true
},
{
"type": "pack",
"id": "epilogue",
"is_available": true
},
{
"type": "core",
"amount": 5,
@@ -622,5 +626,25 @@
],
"orig_price": 500,
"price": 500
},
{
"name": "extend_2",
"items": [
{
"type": "pack",
"id": "extend_2",
"is_available": true
},
{
"type": "core",
"amount": 7,
"id": "core_generic",
"is_available": true
}
],
"orig_price": 700,
"price": 700,
"discount_from": 1646784000000,
"discount_to": 1647388799000
}
]

View File

@@ -28,8 +28,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "yourvoiceso",
@@ -48,8 +48,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "crosssoul",
@@ -68,8 +68,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "impurebird",
@@ -88,8 +88,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "auxesia",
@@ -128,8 +128,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "yozakurafubuki",
@@ -148,8 +148,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "surrender",
@@ -168,8 +168,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "metallicpunisher",
@@ -224,8 +224,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "callmyname",
@@ -244,8 +244,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "fallensquare",
@@ -264,8 +264,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "dropdead",
@@ -304,8 +304,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "astraltale",
@@ -324,8 +324,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "phantasia",
@@ -380,8 +380,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "dottodot",
@@ -400,8 +400,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "dreadnought",
@@ -420,8 +420,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "mirzam",
@@ -440,8 +440,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "heavenlycaress",
@@ -460,8 +460,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "filament",
@@ -480,8 +480,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "avantraze",
@@ -518,8 +518,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "saikyostronger",
@@ -556,8 +556,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "einherjar",
@@ -576,8 +576,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "laqryma",
@@ -596,8 +596,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "amygdata",
@@ -616,8 +616,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "altale",
@@ -636,8 +636,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "feelssoright",
@@ -656,8 +656,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "scarletcage",
@@ -712,8 +712,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "badtek",
@@ -732,8 +732,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "maliciousmischance",
@@ -788,8 +788,8 @@
],
"price": 100,
"orig_price": 100,
"discount_from": 1615248000000,
"discount_to": 1615852799000
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "xeraphinite",
@@ -807,7 +807,9 @@
}
],
"orig_price": 100,
"price": 100
"price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "xanatos",
@@ -825,7 +827,9 @@
}
],
"price": 100,
"orig_price": 100
"orig_price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "attraqtia",
@@ -843,7 +847,9 @@
}
],
"orig_price": 100,
"price": 100
"price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "gimmedablood",
@@ -879,7 +885,9 @@
}
],
"orig_price": 100,
"price": 100
"price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "theultimacy",
@@ -897,7 +905,9 @@
}
],
"orig_price": 100,
"price": 100
"price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "rekkaresonanc",
@@ -945,7 +955,9 @@
}
],
"orig_price": 100,
"price": 100
"price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "eveninginscarlet",
@@ -981,7 +993,9 @@
}
],
"orig_price": 100,
"price": 100
"price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "goldenslaughterer",
@@ -999,7 +1013,9 @@
}
],
"orig_price": 100,
"price": 100
"price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "redolentshape",
@@ -1017,7 +1033,9 @@
}
],
"orig_price": 100,
"price": 100
"price": 100,
"discount_from": 1646784000000,
"discount_to": 1647388799000
},
{
"name": "summerfireworks",
@@ -1056,29 +1074,11 @@
"price": 100
},
{
"name": "internetoverdose",
"name": "kissinglucifer",
"items": [
{
"type": "single",
"id": "internetoverdose",
"is_available": true
},
{
"type": "core",
"amount": 1,
"id": "core_generic",
"is_available": true
}
],
"orig_price": 100,
"price": 100
},
{
"name": "macromod",
"items": [
{
"type": "single",
"id": "macromod",
"id": "kissinglucifer",
"is_available": true
},
{
@@ -1110,11 +1110,11 @@
"price": 100
},
{
"name": "kissinglucifer",
"name": "macromod",
"items": [
{
"type": "single",
"id": "kissinglucifer",
"id": "macromod",
"is_available": true
},
{
@@ -1128,11 +1128,11 @@
"price": 100
},
{
"name": "headbonkache",
"name": "internetoverdose",
"items": [
{
"type": "single",
"id": "headbonkache",
"id": "internetoverdose",
"is_available": true
},
{
@@ -1163,6 +1163,24 @@
"orig_price": 100,
"price": 100
},
{
"name": "headbonkache",
"items": [
{
"type": "single",
"id": "headbonkache",
"is_available": true
},
{
"type": "core",
"amount": 1,
"id": "core_generic",
"is_available": true
}
],
"orig_price": 100,
"price": 100
},
{
"name": "picopicotranslation",
"items": [
@@ -1218,11 +1236,11 @@
"price": 100
},
{
"name": "freemyself",
"name": "cocorocosmetic",
"items": [
{
"type": "single",
"id": "freemyself",
"id": "cocorocosmetic",
"is_available": true
},
{
@@ -1236,11 +1254,11 @@
"price": 100
},
{
"name": "cocorocosmetic",
"name": "freemyself",
"items": [
{
"type": "single",
"id": "cocorocosmetic",
"id": "freemyself",
"is_available": true
},
{
@@ -1270,5 +1288,23 @@
],
"orig_price": 100,
"price": 100
},
{
"name": "nullapophenia",
"items": [
{
"type": "single",
"id": "nullapophenia",
"is_available": true
},
{
"type": "core",
"amount": 1,
"id": "core_generic",
"is_available": true
}
],
"orig_price": 100,
"price": 100
}
]

View File

@@ -422,7 +422,7 @@ def all_character():
def change_character():
# 修改角色数据
skill_ids = ['No_skill', 'gauge_easy', 'note_mirror', 'gauge_hard', 'frag_plus_10_pack_stellights', 'gauge_easy|frag_plus_15_pst&prs', 'gauge_hard|fail_frag_minus_100', 'frag_plus_5_side_light', 'visual_hide_hp', 'frag_plus_5_side_conflict', 'challenge_fullcombo_0gauge', 'gauge_overflow', 'gauge_easy|note_mirror', 'note_mirror', 'visual_tomato_pack_tonesphere',
'frag_rng_ayu', 'gaugestart_30|gaugegain_70', 'combo_100-frag_1', 'audio_gcemptyhit_pack_groovecoaster', 'gauge_saya', 'gauge_chuni', 'kantandeshou', 'gauge_haruna', 'frags_nono', 'gauge_pandora', 'gauge_regulus', 'omatsuri_daynight', 'sometimes(note_mirror|frag_plus_5)', 'scoreclear_aa|visual_scoregauge', 'gauge_tempest', 'gauge_hard', 'gauge_ilith_summer', 'frags_kou', 'visual_ink', 'shirabe_entry_fee', 'frags_yume', 'note_mirror|visual_hide_far', 'frags_ongeki', 'gauge_areus', 'gauge_seele', 'gauge_isabelle', 'gauge_exhaustion', 'skill_lagrange', 'gauge_safe_10', 'frags_nami', 'skill_elizabeth', 'skill_lily', 'skill_kanae_midsummer', 'eto_uncap', 'luna_uncap', 'frags_preferred_song', 'visual_ghost_skynotes', 'ayu_uncap', 'skill_vita', 'skill_fatalis', 'skill_reunion', 'frags_ongeki_slash', 'frags_ongeki_hard', 'skill_amane']
'frag_rng_ayu', 'gaugestart_30|gaugegain_70', 'combo_100-frag_1', 'audio_gcemptyhit_pack_groovecoaster', 'gauge_saya', 'gauge_chuni', 'kantandeshou', 'gauge_haruna', 'frags_nono', 'gauge_pandora', 'gauge_regulus', 'omatsuri_daynight', 'sometimes(note_mirror|frag_plus_5)', 'scoreclear_aa|visual_scoregauge', 'gauge_tempest', 'gauge_hard', 'gauge_ilith_summer', 'frags_kou', 'visual_ink', 'shirabe_entry_fee', 'frags_yume', 'note_mirror|visual_hide_far', 'frags_ongeki', 'gauge_areus', 'gauge_seele', 'gauge_isabelle', 'gauge_exhaustion', 'skill_lagrange', 'gauge_safe_10', 'frags_nami', 'skill_elizabeth', 'skill_lily', 'skill_kanae_midsummer', 'eto_uncap', 'luna_uncap', 'frags_preferred_song', 'visual_ghost_skynotes', 'ayu_uncap', 'skill_vita', 'skill_fatalis', 'skill_reunion', 'frags_ongeki_slash', 'frags_ongeki_hard', 'skill_amane', 'skill_kou_winter', 'gauge_hard|note_mirror']
return render_template('web/changechar.html', skill_ids=skill_ids)