42 Commits

Author SHA1 Message Date
2af94f26ca real merge 2022-07-23 13:13:52 -04:00
7a3bbc10c8 Merge branch 'english' of ssh://git.orfl.xyz:2222/2huCardTD/2HUCardTDGame into english 2022-07-23 12:27:53 -04:00
2e172f2da5 Merge pull request 'english_translation' (#12) from english_translation into english
Reviewed-on: #12
2022-07-23 16:06:02 +00:00
87c222fc2c Typo 2022-07-23 11:03:35 -04:00
2d71e95b7d fix double quote 2021-11-19 22:04:46 -05:00
39f69ceb83 luna star suny combo wasnt in, whoops 2021-11-18 22:22:38 -05:00
4e5e6cfa47 done with all major stuff 2021-11-15 12:31:11 -05:00
fedb39a381 all heroes should be done, just need to do aux and cleanup 2021-11-15 08:41:39 -05:00
0a5aa15f40 up to komachi 2021-11-15 08:14:11 -05:00
ff163b1ca0 up to kokoro had to rewrite her descriptions from scratch cuz the chinese were WRONG 2021-11-14 18:30:52 -05:00
6431b219ed up to shinki dragon 2021-11-14 17:30:44 -05:00
6d2319a41d did auxiliary stuff, going onto junko and hecatia then new stuff 2021-11-14 17:05:15 -05:00
3ee5ce130f did up to yuugi and pet abilities 2021-11-14 16:41:55 -05:00
07a9d06bdf fixed byakuren last ability, started on miko 2021-11-14 13:52:09 -05:00
8c4dca6e50 up to byakuren 2021-11-14 12:59:07 -05:00
e34388cbca up to shizuha 2021-11-14 10:59:37 -05:00
488b78b54b up to kaguya 2021-11-14 08:45:24 -05:00
a07f22ee1f up to mokou 2021-11-13 14:20:36 -05:00
f3107bd17c up to eirin 2021-11-13 14:01:07 -05:00
064cc567cb disabled lower time for multiplayer 2021-11-13 13:36:16 -05:00
08414bdf59 up to chen 2021-11-13 12:56:58 -05:00
1a112cc79e up to yuuka 2021-11-13 12:23:31 -05:00
f8b004aef7 up to meiling 2021-11-12 20:26:44 -05:00
dbdd26c92e Up to koishi 2021-11-12 19:07:58 -05:00
eb41fd61e9 up to flandre 2021-11-12 18:29:42 -05:00
7c723a17bb up to daiyousei 2021-11-12 15:12:29 -05:00
428142d08c up to rin 2021-11-12 14:21:45 -05:00
627e71c34d more corrections 2021-11-12 12:53:22 -05:00
34d7ae2e98 revert chinese changes 2021-11-12 12:40:20 -05:00
313b2c19a5 up to youmu 2021-11-12 12:38:58 -05:00
85e7cde16e up to yuyuko 2021-11-12 11:12:57 -05:00
ec4bacca90 did up to patchy 2021-11-12 08:59:08 -05:00
9157c06f32 fix quote issue 2021-11-11 23:08:11 -05:00
5948f0bab2 up to marisa 2021-11-11 22:56:44 -05:00
d4effdd095 up to merlin 2021-11-11 21:32:09 -05:00
fe1a4bce00 up to kogasa done 2021-11-11 19:44:19 -05:00
66ca96c406 more translations 2021-11-11 12:58:50 -05:00
ade6133d19 some translations 2021-11-11 12:02:31 -05:00
fbdfa5a67f some tutorial translated 2021-11-11 11:07:09 -05:00
a7d3423bfd panorama translation mostly done, the tips section is gonna be a pain in the ass 2021-11-10 22:00:03 -05:00
a768b7a8f8 added some localizations for basic panorama elements 2021-11-10 19:29:20 -05:00
4de1fa5489 updated panorama localization 2021-11-10 17:52:27 -05:00
20 changed files with 2445 additions and 2543 deletions

15
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,15 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}

View File

@@ -1,9 +1,9 @@
<!-- xml reconstructed by ValveResourceFormat: https://vrf.steamdb.info/ -->
<root>
<scripts>
<include src="s2r://panorama/scripts/custom_game/util.vjs_c" />
<include src="s2r://panorama/scripts/custom_game/util.vjs_c" />
</scripts>
<script>
<script><![CDATA[
//GameUI.CustomUIConfig().Config =
//{
// game_name: "touhou"
@@ -33,14 +33,13 @@
}
});
FindDotaHudElement( "PreGame" ).FindChild( "Header" ).style.visibility = "collapse";
</script>
FindDotaHudElement( "PreGame" ).FindChild( "Header" ).style.visibility = "collapse";
]]></script>
<Panel>
<CustomUIElement type="Hud" layoutfile="file://{resources}/layout/custom_game/frames/message/message.xml" />
<CustomUIElement type="Hud" layoutfile="file://{resources}/layout/custom_game/dps_panel.xml" />
<CustomUIElement type="Hud" layoutfile="file://{resources}/layout/custom_game/info.xml" />
<CustomUIElement type="Hud" layoutfile="file://{resources}/layout/custom_game/shop.xml" />
<CustomUIElement type="EndScreen" layoutfile="file://{resources}/layout/custom_game/end_screen.xml" />
<CustomUIElement type="Hud" layoutfile="s2r://panorama/layout/custom_game/frames/message/message.vxml_c" />
<CustomUIElement type="Hud" layoutfile="s2r://panorama/layout/custom_game/dps_panel.vxml_c" />
<CustomUIElement type="Hud" layoutfile="s2r://panorama/layout/custom_game/info.vxml_c" />
<CustomUIElement type="Hud" layoutfile="s2r://panorama/layout/custom_game/shop.vxml_c" />
<CustomUIElement type="EndScreen" layoutfile="s2r://panorama/layout/custom_game/end_screen.vxml_c" />
</Panel>
</root>

View File

@@ -1,3 +1,4 @@
<!-- xml reconstructed by ValveResourceFormat: https://vrf.steamdb.info/ -->
<root>
<styles>
<include src="s2r://panorama/styles/dotastyles.vcss_c" />
@@ -8,9 +9,9 @@
</scripts>
<snippets>
<snippet name="Tower">
<Panel class="Tower" >
<Panel class="Tower">
<DOTAItemImage id="Item" itemname="" hittest="false" />
<Panel id="DPS_info" >
<Panel id="DPS_info">
<Panel id="DPS_bar" />
<Label id="DPS" text="" />
<Label id="DPS_pct" text="%" />
@@ -19,14 +20,13 @@
</snippet>
</snippets>
<Panel hittest="false" class="DPSPanelRoot ShowTime">
<Panel id="TowerListHeader" onactivate="$.GetContextPanel().ToggleClass('ShowTime')" >
<Panel id="TowerListHeader" onactivate="$.GetContextPanel().ToggleClass(&apos;ShowTime&apos;)">
<Label text="#td_tower_dps_title" />
</Panel>
<Panel id="FoodCountPanel" onmouseover="DOTAShowTextTooltip(td_food_count_text)" onmouseout="DOTAHideTextTooltip()" >
<Panel id="FoodCountPanel" onmouseover="DOTAShowTextTooltip(#td_food_count_text)" onmouseout="DOTAHideTextTooltip()">
<Label id="FoodCount" text="#td_food_count" />
</Panel>
<Panel id="TowerList" >
<Panel id="TowerList">
<Panel />
</Panel>
<Label id="KillCount" text="#td_creature_kill_count" />

View File

@@ -1,3 +1,4 @@
<!-- xml reconstructed by ValveResourceFormat: https://vrf.steamdb.info/ -->
<root>
<styles>
<include src="s2r://panorama/styles/dotastyles.vcss_c" />
@@ -9,34 +10,32 @@
<snippets>
<snippet name="player">
<Panel class="Player">
<Panel id="PlayerColor"/>
<DOTAAvatarImage id="AvatarImage" class="ScoreboardAvatar"/>
<Panel id="PlayerColor" />
<DOTAAvatarImage id="AvatarImage" class="ScoreboardAvatar" />
<Panel id="PlayerAndHeroNameContainer" class="TopBottomFlow">
<Label id="PlayerNameLabel" class="PlayerNameLabel" text=""/>
<Label id="HeroNameLabel" class="HeroNameLabel" text=""/>
<Label id="PlayerNameLabel" class="PlayerNameLabel" text="" />
<Label id="HeroNameLabel" class="HeroNameLabel" text="" />
</Panel>
<Label id="KillCount" text="0" />
</Panel>
</snippet>
<!-- PlayerStatus -->
<snippet name="PlayerStatus">
<Panel class="PlayerStatus">
<Panel id="StatusICON" />
<DOTAAvatarImage id="AvatarImage" class="ScoreboardAvatar"/>
<DOTAAvatarImage id="AvatarImage" class="ScoreboardAvatar" />
<Label id="StatusText" html="true" text="" />
</Panel>
</snippet>
</snippets>
<Panel hittest="true" class="EndScreenRoot" >
<Panel hittest="true" class="EndScreenRoot">
<Label id="WinText" text="" />
<Panel id="PlayersPanel" >
<Panel id="PlayersPanelHeader" >
<Panel id="PlayersPanel">
<Panel id="PlayersPanelHeader">
<Label id="KillCountTitle" text="#td_creature_kill_count_text" />
</Panel>
</Panel>
<Button id="ContinueButton" class="Hide" onactivate="Game.FinishGame();">
<Label text="#DOTA_Continue" />
</Button>
</Button>
</Panel>
</root>

View File

@@ -1,3 +1,4 @@
<!-- xml reconstructed by ValveResourceFormat: https://vrf.steamdb.info/ -->
<root>
<styles>
<include src="s2r://panorama/styles/dotastyles.vcss_c" />
@@ -6,7 +7,7 @@
<scripts>
<include src="s2r://panorama/layout/custom_game/frames/message/message.vjs_c" />
</scripts>
<Panel hittest="false" hittestchildren="false" class="MessageRoot" >
<Panel hittest="false" hittestchildren="false" class="MessageRoot">
<Panel id="Content" />
</Panel>
</root>

View File

@@ -1,28 +1,25 @@
<root>
<!-- xml reconstructed by ValveResourceFormat: https://vrf.steamdb.info/ -->
<root>
<styles>
<include src="s2r://panorama/styles/dotastyles.vcss_c" />
<include src="s2r://panorama/styles/custom_game/info.vcss_c" />
</styles>
<scripts>
<scripts>
<include src="s2r://panorama/scripts/custom_game/power.vjs_c" />
<include src="s2r://panorama/scripts/custom_game/info.vjs_c" />
<include src="s2r://panorama/scripts/custom_game/display_error.vjs_c" />
<!-- <include src="s2r://panorama/layout/custom_game/frames/cosmetic_abilities/creator.vjs_c" /> -->
</scripts>
<snippets>
<!-- 卡片 -->
<snippet name="CardPoolCard">
<Panel class="Card" >
<Panel class="Card">
<Image id="CardImage" src="" />
<Panel class="CardBar"/>
<Panel class="CardType"/>
<Panel class="CardBar" />
<Panel class="CardType" />
</Panel>
</snippet>
<!-- 卡组详情 -->
<snippet name="RankDetailCard">
<Panel class="RankDetailItem" >
<Panel id="CardRankContent"/>
<Panel class="RankDetailItem">
<Panel id="CardRankContent" />
<Panel id="StarContent">
<Image src="s2r://panorama/images/custom_game/star_png.vtex" />
<Image src="s2r://panorama/images/custom_game/star_png.vtex" />
@@ -36,102 +33,80 @@
<DOTAItemImage itemname="" />
<DOTAItemImage itemname="" />
<DOTAItemImage itemname="" />
<DOTAItemImage itemname="" />
</Panel>
<DOTAItemImage itemname="" />
</Panel>
<Panel id="TextContent">
<Label html="true" text="" />
</Panel>
</Panel>
</snippet>
<!-- 攻略列表项目 -->
<snippet name="StrategyListItem">
<Panel class="URLItem">
<Label class="LeftTitle" text="" />
<Panel class="TopBottomFlow MiddleAlign">
<Label class="URLItemTitle" text="" />
<Panel class="TopBottomFlow MiddleAlign">
<Label class="URLItemTitle" text="" />
<Label class="URLItemSubTitle" text="" />
</Panel>
</Panel>
</snippet>
<!-- 排行榜列表项目 -->
<snippet name="RankListItem">
<Panel class="RankItem" onactivate="RankDetail()">
<Label class="RankLeftTitle" html="true" text="" />
<Panel id="PlayerList">
</Panel>
<Panel id="PlayerList" />
<Panel class="TopBottomFlow MiddleAlign">
<Label class="URLItemTitle" html="true" text="" />
<Label class="URLItemSubTitle" html="true" text="" />
</Panel>
</Panel>
</snippet>
<!-- 卡池卡片 -->
<snippet name="Tower">
<Panel class="Tower" >
<Panel class="Tower">
<DOTAItemImage id="Item" itemname="" hittest="false" />
<Label id="xxx" text="x" />
<Label id="Count" text="" />
</Panel>
</snippet>
</snippets>
<Panel hittest="false" class="InfoRoot" >
<!--顶部菜单-->
<Panel id="iconlist" class="">
<Panel id="UpdatePoint" onmouseover="DOTAShowTextTooltip(td_refresh_desc)" onmouseout="DOTAHideTextTooltip()" onactivate="UpdateGamePoint()" >
<Image src="s2r://panorama/images/custom_game/refresh2_png.vtex" />
<Panel hittest="false" class="InfoRoot">
<Panel id="iconlist" class="">
<Panel id="UpdatePoint" onmouseover="DOTAShowTextTooltip(#td_refresh_desc)" onmouseout="DOTAHideTextTooltip()" onactivate="UpdateGamePoint()">
<Image src="s2r://panorama/images/custom_game/refresh2_png.vtex" />
</Panel>
<Button onmouseover="DOTAShowTextTooltip(td_patron_desc)" onmouseout="DOTAHideTextTooltip()" onactivate="$('#PatronStore').RemoveClass('Hide')" >
<Button onmouseover="DOTAShowTextTooltip(#td_patron_desc)" onmouseout="DOTAHideTextTooltip()" onactivate="$(&apos;#PatronStore&apos;).RemoveClass(&apos;Hide&apos;)">
<Label text="赞助" />
</Button>
<Label id="AccountID" text="" />
</Panel>
<!-- 商城 -->
<Panel id="PatronStore" class="Hide" />
<!-- 进攻进度 -->
<Panel id="AttackingPanel" >
<Panel id="CreepCountProcessBar" >
<Panel id="CreepCountProcessBarPCT" >
</Panel>
<Panel id="PatronStore" class="Hide" />
<Panel id="AttackingPanel">
<Panel id="CreepCountProcessBar">
<Panel id="CreepCountProcessBarPCT" />
<Label id="CreepCount" text="#td_pawn_count" />
</Panel>
<Panel id="DifficultyWavePanel" >
<Panel id="DifficultyWavePanel">
<Label id="Difficulty" text="" />
<Label id="WaveText" html="true" text="#td_attacking_wave" />
</Panel>
<Panel id="AttackingProcessTimePanel" >
<Panel id="AttackingProcessTimePanel">
<Label id="AttackingProcessTime" text="5" />
</Panel>
</Panel>
<!-- 卡池 -->
<Panel id="CardPoolPanel" hittest="false">
<Panel id="CardPoolHeader" onactivate="$('#CardPoolPanel').ToggleClass('ShowTime')" >
<Panel id="CardPoolHeader" onactivate="$(&apos;#CardPoolPanel&apos;).ToggleClass(&apos;ShowTime&apos;)">
<Label text="#td_card_pool" />
</Panel>
<Panel id="CardPoolContent" />
</Panel>
<!-- 商店 todo-->
<Panel id="Shop" />
<!-- 选择卡片 -->
<Panel id="SelectCardPanel" hittest="false" class="Hide">
<Panel id="SelectCardHeader" >
<Panel id="SelectCardHeader">
<Label id="SelectCardHeaderText" text="#td_select_card" />
</Panel>
<Button id="SelectCardCloseButton" onactivate="SelectCardClose()" >
</Button>
<Panel id="SelectCardPoolContent" />
<Button id="SelectCardCloseButton" onactivate="SelectCardClose()" />
<Panel id="SelectCardPoolContent" />
</Panel>
<!-- 选择初始卡 -->
<Panel id="SelectStartCard" >
<Panel class="Card" onactivate="SelectStartCard('item_0001')">
<Panel id="SelectStartCard">
<Panel class="Card" onactivate="SelectStartCard(&apos;item_0001&apos;)">
<Panel class="ItemImage">
<DOTAItemImage hittest="false" itemname="item_0001" />
</Panel>
@@ -140,7 +115,7 @@
<Panel id="Item1Description" class="Description" />
</Panel>
</Panel>
<Panel class="Card" onactivate="SelectStartCard('item_0002')">
<Panel class="Card" onactivate="SelectStartCard(&apos;item_0002&apos;)">
<Panel class="ItemImage">
<DOTAItemImage hittest="false" itemname="item_0002" />
</Panel>
@@ -149,7 +124,7 @@
<Panel id="Item2Description" class="Description" />
</Panel>
</Panel>
<Panel class="Card" onactivate="SelectStartCard('item_0003')">
<Panel class="Card" onactivate="SelectStartCard(&apos;item_0003&apos;)">
<Panel class="ItemImage">
<DOTAItemImage hittest="false" itemname="item_0003" />
</Panel>
@@ -159,87 +134,65 @@
</Panel>
</Panel>
</Panel>
<!-- 打开攻略 -->
<Button id="VideosButton" onactivate="VideosPanelOpen()" >
<Button id="VideosButton" onactivate="VideosPanelOpen()">
<Label text="#td_tutorial_video" />
</Button>
<!-- 踢人按钮 -->
<Button id="KickButton" onactivate="KickVoteOpen()" >
<Button id="KickButton" onactivate="KickVoteOpen()">
<Label text="#td_kick_vote" />
</Button>
<!-- 永久暂停按钮 -->
<Button id="PauseButton" onactivate="PauseGame()" >
<Button id="PauseButton" onactivate="PauseGame()">
<Label text="#pause_game_btn" />
</Button>
<!-- 排行榜按钮 -->
<Button id="RankButton" onactivate="RankPanelOpen()" >
<Label text="#td_rank_list_100" onmouseover="ShowRankButtonTip(1)" onmouseout="HideRankButtonTip()"/>
<Button id="RankButton" onactivate="RankPanelOpen()">
<Label text="#td_rank_list_100" onmouseover="ShowRankButtonTip(1)" onmouseout="HideRankButtonTip()" />
</Button>
<!-- 组队排行榜按钮 -->
<Button id="TeamRankButton" onactivate="TeamRankPanelOpen()" >
<Label text="#td_team_rank_list_100" onmouseover="ShowRankButtonTip(2)" onmouseout="HideRankButtonTip()"/>
<Button id="TeamRankButton" onactivate="TeamRankPanelOpen()">
<Label text="#td_team_rank_list_100" onmouseover="ShowRankButtonTip(2)" onmouseout="HideRankButtonTip()" />
</Button>
<!-- 攻略 -->
<Panel id="VideosPanel" hittest="false" class="Hide">
<Panel id="VideoListWindow" class="Hide" >
<Panel id="VideoListWindow" class="Hide">
<Button class="CloseButton" onactivate="VideosPanelClose()" />
<Panel id="VideoDescription" >
<Panel id="VideoDescription">
<Label html="true" text="#td_video_tip" />
</Panel>
<Panel id="URLList" />
</Panel>
<Panel id="StrategyWindow" class="Hide" >
<Panel id="StrategyWindow" class="Hide">
<Button class="CloseButton" onactivate="CloseStrategyWindow()" />
<Label class="StrategyTitle" html="true" text="{s:StrategyTitle1}" />
<Label class="StrategyText" html="true" text="{s:StrategyText1}" />
<Label class="StrategyTitle" html="true" text="{s:StrategyTitle2}" />
<Label class="StrategyText" html="true" text="{s:StrategyText2}" />
<Label class="StrategyTitle" html="true" text="{s:StrategyTitle3}" />
<Label class="StrategyText" html="true" text="{s:StrategyText3}" />
<Label class="StrategyTitle" html="true" text="{s:StrategyTitle4}" />
<Label class="StrategyText" html="true" text="{s:StrategyText4}" />
<Image id="StrategyImage" src="" scaling="stretch-to-fit-preserve-aspect"/>
<Image id="StrategyImage" src="" scaling="stretch-to-fit-preserve-aspect" />
</Panel>
</Panel>
<!-- 投票踢人 -->
<Panel id="KickVotePanel" hittest="false" class="Hide">
<Panel id="KickVoteMain" hittest="false">
<Button class="KickVoteButton" onactivate="KickVote(1)" >
<Button class="KickVoteButton" onactivate="KickVote(1)">
<Label html="true" class="Title" text="#kick_player_1" />
<Label html="true" class="Title" text="{s:PlayerName1}" />
</Button>
<Button class="KickVoteButton" onactivate="KickVote(2)" >
<Button class="KickVoteButton" onactivate="KickVote(2)">
<Label html="true" class="Title" text="#kick_player_2" />
<Label html="true" class="Title" text="{s:PlayerName2}" />
</Button>
<Button class="KickVoteButton" onactivate="KickVote(3)" >
<Button class="KickVoteButton" onactivate="KickVote(3)">
<Label html="true" class="Title" text="#kick_player_3" />
<Label html="true" class="Title" text="{s:PlayerName3}" />
</Button>
<Button class="KickVoteButton" onactivate="KickVote(4)" >
<Button class="KickVoteButton" onactivate="KickVote(4)">
<Label html="true" class="Title" text="#kick_player_4" />
<Label html="true" class="Title" text="{s:PlayerName4}" />
</Button>
<Button id="KickVoteCancelButton" onactivate="KickVoteClose()" >
<Button id="KickVoteCancelButton" onactivate="KickVoteClose()">
<Label html="true" text="#DOTA_UI_Cancel" />
</Button>
</Panel>
</Panel>
<!-- 投票踢人确认 -->
<Panel id="KickAcceptPanel" class="Hide">
<Panel id="KickAcceptText">
<Label html="true" text="{s:msg}" />
@@ -251,64 +204,53 @@
</Button>
<Button id="KickNoButton" class="Cancel">
<Label text="#no" />
</Button>
</Button>
</Panel>
<!-- 排行榜 -->
<Panel id="RankPanel" hittest="false" class="Hide">
<Panel id="RankListWindow" class="Hide" >
<Panel id="RankListWindow" class="Hide">
<Button class="CloseButton" onactivate="RankPanelClose()" />
<Panel id="RankDescription" >
<Panel id="RankDescription">
<Label html="true" text="#td_rank_list_100_desc" />
</Panel>
<Panel id="RankList" />
<Panel id="RankList" />
</Panel>
<Panel id="RankDetailWindow" class="Hide" >
<Panel id="RankDetailWindow" class="Hide">
<Panel class="RightTopButtons">
<Button id="ResetRankAll" class="Hide" onactivate="RankResetAll()">
<Button id="ResetRankAll" class="Hide" onactivate="RankResetAll()">
<Label text="全部重置" />
</Button>
<Button id="ResetRank" onactivate="">
<Button id="ResetRank" onactivate="">
<Label text="重置" />
</Button>
<Button class="CloseButton" onactivate="RankDetailClose()" />
</Panel>
<Button class="CloseButton" onactivate="RankDetailClose()" />
</Panel>
<Panel id="RankDetail" />
</Panel>
</Panel>
<!-- 组队排行榜 -->
<Panel id="TeamRankPanel" hittest="false" class="Hide">
<Panel id="TeamRankListWindow" class="Hide" >
<Panel id="TeamRankListWindow" class="Hide">
<Button class="CloseButton" onactivate="TeamRankPanelClose()" />
<Panel id="TeamRankDescription" >
<Panel id="TeamRankDescription">
<Label html="true" text="#td_team_rank_list_100_desc" />
</Panel>
<Panel id="TeamRankList" />
<Panel id="TeamRankList" />
</Panel>
<Panel id="TeamRankDetailWindow" class="Hide" >
<Panel id="TeamRankDetailWindow" class="Hide">
<Panel class="RightTopButtons">
<Button id="TeamResetRankAll" class="Hide" onactivate="TeamRankResetAll()">
<Button id="TeamResetRankAll" class="Hide" onactivate="TeamRankResetAll()">
<Label text="全部重置" />
</Button>
<Button id="TeamResetRank" onactivate="">
<Button id="TeamResetRank" onactivate="">
<Label text="重置" />
</Button>
<Button class="CloseButton" onactivate="TeamRankDetailClose()" />
</Panel>
<Button class="CloseButton" onactivate="TeamRankDetailClose()" />
</Panel>
<Panel id="TeamRankDetail" />
</Panel>
</Panel>
<!-- 玩家头像 -->
<Panel id="PlayerAvatarElements" class="Hide">
<!-- <DOTAAvatarImage hittest="false" hittestchildren="false" /> -->
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -328,7 +270,6 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -348,7 +289,6 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -368,7 +308,6 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -388,7 +327,11 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -407,13 +350,9 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
</Panel>
<!-- 玩家头像 -->
<Panel id="TeamPlayerAvatarElements" class="Hide">
<!-- <DOTAAvatarImage hittest="false" hittestchildren="false" /> -->
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -433,7 +372,6 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -453,7 +391,6 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -473,7 +410,6 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -493,7 +429,6 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
@@ -511,6 +446,11 @@
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
</Panel>
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
<DOTAAvatarImage />
</Panel>
</Panel>
</root>

View File

@@ -1,3 +1,4 @@
<!-- xml reconstructed by ValveResourceFormat: https://vrf.steamdb.info/ -->
<root>
<styles>
<include src="s2r://panorama/styles/dotastyles.vcss_c" />
@@ -6,13 +7,12 @@
<scripts>
<include src="s2r://panorama/scripts/custom_game/shop.vjs_c" />
</scripts>
<Panel hittest="false" class="ShopRoot" >
<Panel id="ShopContent" class="Hidden" onactivate="" >
<Panel hittest="false" class="ShopRoot">
<Panel id="ShopContent" class="Hidden" onactivate="">
<Panel id="AbilityList" />
<Button id="CloseShopButton" onactivate="ToggleStyle(ShopContent, Hidden)" >
</Button>
<Button id="CloseShopButton" onactivate="ToggleStyle(ShopContent, Hidden)" />
</Panel>
<Panel id="BottomBar" >
<Panel id="BottomBar">
<Panel id="BottomBarBG" />
<Button id="ShopButton" onactivate="ToggleStyle(ShopContent, Hidden)">
<Label id="GoldText" text="" />

View File

@@ -1,18 +1,18 @@
<!-- xml reconstructed by ValveResourceFormat: https://vrf.steamdb.info/ -->
<root>
<styles>
<include src="s2r://panorama/styles/dotastyles.vcss_c" />
<include src="s2r://panorama/styles/custom_game/team_select.vcss_c" />
</styles>
<scripts>
<scripts>
<include src="s2r://panorama/scripts/custom_game/team_select.vjs_c" />
<include src="s2r://panorama/scripts/custom_game/team_select_card.vjs_c" />
</scripts>
<snippets>
<!-- 已选卡片 -->
<snippets>
<snippet name="SelectedCard">
<Panel class="Card">
<Panel id="Content" >
<Panel id="ItemInfo" >
<Panel id="Content">
<Panel id="ItemInfo">
<DOTAItemImage id="ItemImage" hittest="false" itemname="" />
<Label id="ItemName" text="{s:itemname}" />
</Panel>
@@ -24,14 +24,12 @@
<DOTAScenePanel id="Effect" hittest="false" map="td/selected_card" camera="default" />
</Panel>
</snippet>
<!-- 卡片 -->
<snippet name="CardPoolCard">
<Panel class="Card" >
<Image id="CardBackGround" src="s2r://panorama/images/custom_game/cards/item_n_png.vtex"/>
<Panel class="Card">
<Image id="CardBackGround" src="s2r://panorama/images/custom_game/cards/item_n_png.vtex" />
<Image id="CardImage" src="s2r://panorama/images/custom_game/cards/remilia_png.vtex" />
<Panel class="CardBar"/>
<Panel class="CardType"/>
<Panel class="CardBar" />
<Panel class="CardType" />
<Panel class="CardRemainingCount">
<Label text="x{s:remaining_count}" />
</Panel>
@@ -40,21 +38,17 @@
</Panel>
</Panel>
</snippet>
<!-- 卡片技能 -->
<snippet name="CardAbility">
<Panel class="Ability">
<Panel class="AbilityHeader">
<DOTAAbilityImage id="AbilityImage" abilityname="" />
<Label id="AbilityName" html="true" text="" />
</Panel>
<Panel class="AbilityBody" >
<Panel class="AbilityBody">
<Label id="AbilityDescription" html="true" text="" />
</Panel>
</Panel>
</snippet>
<!-- 难度槽 -->
<snippet name="DifficultyContainer">
<Panel class="DifficultyContainer">
<Panel class="OptionButtonBackground">
@@ -67,13 +61,10 @@
<Label class="T1" text="{d:difficulty}" />
<Label class="T2" text="{s:difficultyText}" />
</Panel>
<Panel id="PlayerList" >
</Panel>
<Panel id="PlayerList" />
</Panel>
</Panel>
</snippet>
<!-- 卡组 -->
<snippet name="CardGroupItem">
<Panel class="CardGroupItem">
<Button>
@@ -83,66 +74,50 @@
</snippet>
</snippets>
<Panel hittest="false" class="TeamSelectRoot">
<!-- 界面标题 -->
<Panel id="SetupTitlePanel" >
<Panel id="SetupTitlePanel">
<Panel id="SetupTitleBG">
<Panel class="Left" />
<Panel class="Right" />
</Panel>
<Label id="SetupTitle" text="#addon_game_name" />
</Panel>
<!-- 副标题 -->
<Panel id="SetupTitleHR" />
<Label id="SetupDescription" html="true" text="#addon_game_name" />
<!-- 显示时间 -->
<Panel id="ReadyTimePanel" >
<Panel id="ReadyTimePanel">
<Label id="ReadyTime" text="" />
</Panel>
<!-- 操作提示 -->
<Panel id="CardsPanelTips" >
<Panel class="CardPoolNote" >
<Panel class="Tip" onmouseover="DOTAShowTextTooltip(td_card_pool_note_desc)" onmouseout="DOTAHideTextTooltip()" >
</Panel>
<Panel id="CardsPanelTips">
<Panel class="CardPoolNote">
<Panel class="Tip" onmouseover="DOTAShowTextTooltip(#td_card_pool_note_desc)" onmouseout="DOTAHideTextTooltip()">
<Image src="s2r://panorama/images/custom_game/note_png.vtex" />
<Label text="#td_card_pool_note" />
</Panel>
</Panel>
</Panel>
<!-- 卡片 -->
<Panel id="CardsPanel" hittest="false" >
<!-- 左边 - 已选卡组 -->
<Panel id="SelectedCard" >
<Panel id="CardsPanel" hittest="false">
<Panel id="SelectedCard">
<Label id="CardGroupText" html="true" class="Hide" text="" />
<!-- 显示每种卡片类型数量 -->
<Panel id="CardTypeCount">
<Panel class="Center LeftRightFlow">
<!-- 显示SSR数量 -->
<Panel class="CardType SSR" >
<Panel class="CardType SSR">
<Panel class="Block">
<Label class="Count" text="{d:ssr_count}" />
<Label class="MaxCount" text="/{d:ssr_maxcount}" />
</Panel>
</Panel>
<!-- 显示SR数量 -->
<Panel class="CardType SR" >
<Panel class="CardType SR">
<Panel class="Block">
<Label class="Count" text="{d:sr_count}" />
<Label class="MaxCount" text="/{d:sr_maxcount}" />
</Panel>
</Panel>
<!-- 显示R数量 -->
<Panel class="CardType R" >
<Panel class="CardType R">
<Panel class="Block">
<Label class="Count" text="{d:r_count}" />
<Label class="MaxCount" text="/{d:r_maxcount}" />
</Panel>
</Panel>
<!-- 显示N数量 -->
<Panel class="CardType N" >
<Panel class="CardType N">
<Panel class="Block">
<Label class="Count" text="{d:n_count}" />
<Label class="MaxCount" text="/{d:n_maxcount}+" />
@@ -150,38 +125,29 @@
</Panel>
</Panel>
</Panel>
<!-- 显示已选卡片 -->
<Panel id="SelectedCardList" >
</Panel>
<!-- 卡组清单 -->
<Panel id="CardGroupOptions" class="Hide" />
<!-- 按钮 -->
<Panel id="SelectedCardList" />
<Panel id="CardGroupOptions" class="Hide" />
<Panel id="CardGroupOptionsButton" class="LeftRightFlow Hide">
<Button id="BackToGroupOptions" onactivate="ShowCardGroupList(true)" >
<Button id="BackToGroupOptions" onactivate="ShowCardGroupList(true)">
<Label text="#page_back" />
</Button>
<Button id="SaveGroupOptions" onactivate="SaveCardGroup()" >
<Button id="SaveGroupOptions" onactivate="SaveCardGroup()">
<Label text="#DOTA_Filter_SaveRule" />
</Button>
</Button>
</Panel>
<Panel id="CardGroupOptionsButton2" class="LeftRightFlow Hide">
<Button id="RenameGroupOptions" onactivate="RenameCardGroupDialog()" >
<Button id="RenameGroupOptions" onactivate="RenameCardGroupDialog()">
<Label text="#td_rename_group" />
</Button>
<Button id="ClearGroupOptions" onactivate="ClearCardGroupDialog()" >
<Button id="ClearGroupOptions" onactivate="ClearCardGroupDialog()">
<Label text="#td_clear_all" />
</Button>
</Button>
</Panel>
</Panel>
<!-- 中间 - 卡池 -->
<Panel id="CardPool" >
<Panel id="CardPool">
<Panel id="CardPoolBackground" />
<Panel class="TopBottomFlow FullWidth FullHeight">
<Panel id="CardPoolHeader" >
<Panel id="CardPoolHeader">
<Panel id="CardPoolFilter">
<Label style="color:#fff;vertical-align: middle;" text="#td_type" />
<ToggleButton id="SSR" selected="true" text="SSR" onactivate="ShowCardFromFilter()" />
@@ -189,64 +155,53 @@
<ToggleButton id="R" selected="true" text="R" onactivate="ShowCardFromFilter()" />
<ToggleButton id="N" selected="true" text="N" onactivate="ShowCardFromFilter()" />
</Panel>
<Panel class="RightAlign LeftRightFlow">
<Panel id="UpdatePoint" onmouseover="DOTAShowTextTooltip(td_refresh_desc)" onmouseout="DOTAHideTextTooltip()" onactivate="UpdateGamePoint()" >
<Image src="s2r://panorama/images/custom_game/refresh_png.vtex" />
</Panel>
<Panel id="GamePoint" onmouseover="DOTAShowTextTooltip(td_gamepoint_desc)" onmouseout="DOTAHideTextTooltip()" >
<Panel class="RightAlign LeftRightFlow">
<Panel id="UpdatePoint" onmouseover="DOTAShowTextTooltip(#td_refresh_desc)" onmouseout="DOTAHideTextTooltip()" onactivate="UpdateGamePoint()">
<Image src="s2r://panorama/images/custom_game/refresh_png.vtex" />
</Panel>
<Panel id="GamePoint" onmouseover="DOTAShowTextTooltip(#td_gamepoint_desc)" onmouseout="DOTAHideTextTooltip()">
<Image src="s2r://panorama/images/custom_game/fairy_png.vtex" />
<Label text="{d:game_point}" />
</Panel>
</Panel>
</Panel>
<Panel id="CardPoolContent" >
</Panel>
<Panel id="CardPoolContent" />
</Panel>
</Panel>
<!-- 右边 - 卡片信息 -->
<Panel id="CardInfo" >
<Panel id="CardInfoContent" >
<Panel class="Card" >
<Panel id="CardInfo">
<Panel id="CardInfoContent">
<Panel class="Card">
<DOTAScenePanel id="CardEffect" map="td/card" camera="default" />
<Image id="CardBackGround" src="s2r://panorama/images/custom_game/cards/item_n_png.vtex"/>
<Image id="CardBackGround" src="s2r://panorama/images/custom_game/cards/item_n_png.vtex" />
<Image id="CardImage" src="s2r://panorama/images/custom_game/cards/remilia_png.vtex" />
<Image id="CardName" src="s2r://panorama/images/custom_game/cards/remilia_name_png.vtex"/>
<Panel class="CardBar"/>
<Panel class="CardType"/>
</Panel>
<Button id="DecomposeCardButton" onmouseover="DOTAShowTextTooltip(td_train_card_question)" onmouseout="DOTAHideTextTooltip()" onactivate="TrainCard(1)" oncontextmenu="TrainCard(50)">
<Image id="CardName" src="s2r://panorama/images/custom_game/cards/remilia_name_png.vtex" />
<Panel class="CardBar" />
<Panel class="CardType" />
</Panel>
<Button id="DecomposeCardButton" onmouseover="DOTAShowTextTooltip(#td_train_card_question)" onmouseout="DOTAHideTextTooltip()" onactivate="TrainCard(1)" oncontextmenu="TrainCard(50)">
<Panel class="Center LeftRightFlow MiddleAlign">
<Label html="true" text="#td_train_card_title" />
<Image src="s2r://panorama/images/custom_game/fairy_png.vtex" />
<Label html="true" text="#td_train_card_cost" />
</Panel>
</Button>
</Button>
<Label id="CardInfoName" html="true" text="" />
<Panel id="CardAbilities" >
</Panel>
<Panel id="CardAbilities" />
<DOTAItemImage id="CardInfoItem" itemname="item_0001" />
</Panel>
</Panel>
</Panel>
<!-- 难度选择 -->
<Panel id="DifficultyPanel" >
</Panel>
<!-- 底部 -->
<Panel id="BottomContent" >
<Panel id="DifficultyPanel" />
<Panel id="BottomContent">
<Panel class="LeftRightFlow">
<Button id="BackButton" onactivate="OnBack()">
<Label text="#page_back" />
</Button>
<Button id="ContinueButton" onactivate="OnContinue()">
<Label text="{s:continue_text}" />
</Button>
</Button>
</Panel>
</Panel>
<!-- 玩家头像必须事先在Xml中创建snippets和js创建无效 -->
<Panel id="PlayerAvatarElements" class="Hide">
<DOTAAvatarImage hittest="false" hittestchildren="false" />
<DOTAAvatarImage hittest="false" hittestchildren="false" />
@@ -265,32 +220,21 @@
<DOTAAvatarImage hittest="false" hittestchildren="false" />
<DOTAAvatarImage hittest="false" hittestchildren="false" />
</Panel>
<!-- 准备就绪 -->
<Panel id="WaitOtherPlayersPanel" >
<Panel id="PlayerList" >
</Panel>
<Panel id="WaitOtherPlayersPanel">
<Panel id="PlayerList" />
</Panel>
<!-- 右上角按钮 -->
<Panel id="RightTopButtons">
<Button onactivate="$('#DonatePanel').RemoveClass('Hide')" >
<Panel id="RightTopButtons">
<Button onactivate="$(&apos;#DonatePanel&apos;).RemoveClass(&apos;Hide&apos;)">
<Label text="#donate" />
</Button>
</Panel>
<!-- 赞助 -->
<Panel id="DonatePanel" class="Hide" />
<Panel id="DonatePanel" class="Hide" />
<DOTAScenePanel id="ClickedEffect" hittest="false" map="td/clicked_test" camera="default" />
<Panel id="LockFrame">
<Panel class="loading_ico"/>
<Label class="loading" text="Loading..." />
<Label id="loading_tips" html="true" text="#td_load_tips" />
<Panel class="loading_ico" />
<Label class="loading" text="Loading..." />
<Label id="loading_tips" html="true" text="#td_load_tips" />
</Panel>
<!-- 对话框-->
<Panel id="MessageDialog">
<Label html="true" text="{s:msg}" />
<TextEntry id="MessageInput" maxchars="20" placeholder="" oninputsubmit="" />

View File

@@ -291,6 +291,7 @@ GameUI.StringCode = StringCode;
GameUI.Cheated = false;
// 创建网页
function script() {
var fn = arguments[0];
@@ -331,7 +332,7 @@ var moviePage = script(function(){/*
</root>
*/});
// 刀塔2021.09.18更新后官方移除BLoadLayoutFromString改造后需要配合xml
// 刀塔2021.09.18更新后官方移除BLoadLayoutFromString改造后需要配合调用方xml
GameUI.PlayMovie = function (panel, movie, duration, isShowClose) {
if (!panel) return;
if (!movie) return;

View File

@@ -27,11 +27,11 @@ function FindItemName( unitname ) {
function SetTowerTooltip( panel ) {
panel.SetPanelEvent("onmouseover", function () {
var text = $.Localize(panel.GetAttributeString("UnitName", ""));
$.DispatchEvent("DOTAShowTextTooltip", panel, text)
var text = $.Localize("#" + panel.GetAttributeString("UnitName", ""));
$.DispatchEvent("DOTAShowTextTooltip", panel, text);
});
panel.SetPanelEvent("onmouseout", function () {
$.DispatchEvent("DOTAHideTextTooltip")
$.DispatchEvent("DOTAHideTextTooltip");
});
panel.SetPanelEvent("onactivate", function () {
var ent = panel.GetAttributeInt("Ent", 0);

View File

@@ -14,7 +14,7 @@
panel.FindChild("AvatarImage").steamid = info.player_steamid;
panel.FindChild("PlayerAndHeroNameContainer").FindChild("PlayerNameLabel").text = info.player_name;
panel.FindChild("PlayerAndHeroNameContainer").FindChild("HeroNameLabel").text = $.Localize(info.player_selected_hero);
panel.FindChild("PlayerAndHeroNameContainer").FindChild("HeroNameLabel").text = $.Localize("#" + info.player_selected_hero);
var table = CustomNetTables.GetTableValue("CustomGameInfo", "game_info" + info.player_steamid);
var KillCount = panel.FindChild("KillCount");

View File

@@ -384,7 +384,7 @@ function SetCardEvent(card, can_activate, isStartBonus, isSpecialBonus) {
function CardPoolSetTowerTooltip( panel ) {
panel.SetPanelEvent("onmouseover", function () {
var text = $.Localize("DOTA_Tooltip_ability_" + panel.GetAttributeString("itemName", ""));
var text = $.Localize("#DOTA_Tooltip_ability_" + panel.GetAttributeString("itemName", ""));
$.DispatchEvent("DOTAShowTextTooltip", panel, text)
});
panel.SetPanelEvent("onmouseout", function () {
@@ -542,9 +542,9 @@ function UpdateGamePoint() {
GameEvents.Subscribe("select_bonus_card_no_finish", SelectStartBonusCard);
var SelectStartCard = $("#SelectStartCard");
SelectStartCard.SetDialogVariable("item1", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0001"));
SelectStartCard.SetDialogVariable("item2", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0002"));
SelectStartCard.SetDialogVariable("item3", $.Localize("#td_select_start_card") + $.Localize("DOTA_Tooltip_ability_item_0003"));
SelectStartCard.SetDialogVariable("item1", $.Localize("#td_select_start_card") + $.Localize("#DOTA_Tooltip_ability_item_0001"));
SelectStartCard.SetDialogVariable("item2", $.Localize("#td_select_start_card") + $.Localize("#DOTA_Tooltip_ability_item_0002"));
SelectStartCard.SetDialogVariable("item3", $.Localize("#td_select_start_card") + $.Localize("#DOTA_Tooltip_ability_item_0003"));
SelectStartCard.SetHasClass("Spawn", true);
function renderText( panel, text ) {
@@ -556,9 +556,9 @@ function UpdateGamePoint() {
}
}
renderText($("#Item1Description"), $.Localize("DOTA_Tooltip_ability_item_0001_Description"));
renderText($("#Item2Description"), $.Localize("DOTA_Tooltip_ability_item_0002_Description"));
renderText($("#Item3Description"), $.Localize("DOTA_Tooltip_ability_item_0003_Description"));
renderText($("#Item1Description"), $.Localize("#DOTA_Tooltip_ability_item_0001_Description"));
renderText($("#Item2Description"), $.Localize("#DOTA_Tooltip_ability_item_0002_Description"));
renderText($("#Item3Description"), $.Localize("#DOTA_Tooltip_ability_item_0003_Description"));
});
// 断线重连
@@ -679,8 +679,8 @@ function setStrategy(index) {
StrategyWindow.SetDialogVariable("StrategyText3", $.Localize("#td_strategy_" + index + "_text3"));
StrategyWindow.SetDialogVariable("StrategyTitle4", $.Localize("#td_strategy_" + index + "_title4"));
StrategyWindow.SetDialogVariable("StrategyText4", $.Localize("#td_strategy_" + index + "_text4"));
var img = $.Localize("#td_strategy_" + index + "_image");
if (img === "" || img === "td_strategy_" + index + "_image")
var img = $.Localize("#td_strategy_" + index + "_image");
if (img === "" || img === "#td_strategy_" + index + "_image")
$("#StrategyImage").SetImage("");
else
$("#StrategyImage").SetImage("s2r://panorama/images/custom_game/" + img + ".vtex");
@@ -816,7 +816,7 @@ function OnAiSkillEnable(data) {
if (Entities.IsStunned(Players.GetPlayerHeroEntityIndex(Players.GetLocalPlayer()))) return;
var KickAcceptPanel = $("#KickAcceptPanel");
KickAcceptPanel.SetDialogVariable("msg", $.Localize("#th_ai_choose") + $.Localize(data.name) + " " + data.skill + " " + $.Localize("#skill") + ": " + $.Localize("DOTA_Tooltip_ability_thtd_" + data.name + "_0" + data.skill));
KickAcceptPanel.SetDialogVariable("msg", $.Localize("#th_ai_choose") + $.Localize("#" + data.name) + " " + data.skill + " " + $.Localize("#skill") + ": " + $.Localize("#DOTA_Tooltip_ability_thtd_" + data.name + "_0" + data.skill));
KickAcceptPanel.SetHasClass("Hide", false);
$("#KickVotePanel").SetHasClass("Hide", true);
$("#KickYesButton").SetPanelEvent("onactivate", "AiChooseAccept()");
@@ -974,7 +974,7 @@ function RankShowCards(rankdata) {
}
if (i === 0)
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize("#" + card.damage));
else
panel.FindChild("TextContent").GetChild(0).text = "能量:"+ card.power + "<br/>攻击力:"+ card.attack + "<br/>伤害量:"+ damagetext;
@@ -1129,7 +1129,7 @@ function GameOverShowCards(rankdata) {
}
if (i === 0)
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize("#" + card.damage));
else
panel.FindChild("TextContent").GetChild(0).text = "能量:"+ card.power + "<br/>攻击力:"+ card.attack + "<br/>伤害量:"+ damagetext;
@@ -1317,7 +1317,7 @@ function TeamRankShowCards(rankdata) {
}
if (i === 0)
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize(card.damage));
panel.FindChild("TextContent").GetChild(0).text = "爆弹数量:"+ card.power + "<br/>核心数量:"+ card.attack + "<br/>最后BOSS" + (typeof card.damage == 'number' ? "" : $.Localize("#" + card.damage));
else
panel.FindChild("TextContent").GetChild(0).text = "能量:"+ card.power + "<br/>攻击力:"+ card.attack + "<br/>伤害量:"+ damagetext;

View File

@@ -1,5 +1,19 @@
"use strict";
//Fix Localize
/*
const __localize = $.Localize;
$.Localize = function (text, panel) {
if (text[0] !== '#'){
text = '#' + text;
}
if (panel) {
return __localize.call($, text, panel);
}
return __localize.call($, text);
}
*/
var CardCount_SSR = 10;
var CardCount_SR = 22;
var CardCount_R = 40;
@@ -487,7 +501,7 @@ function UpdateSelectedCards( effectItemName ) {
panel.SetPanelEvent("onactivate", "RemoveCard(" + i + ")");
panel.SetDialogVariableInt("count", card.GetSelectedCount());
panel.SetDialogVariable("itemname", $.Localize("DOTA_Tooltip_ability_" + itemname));
panel.SetDialogVariable("itemname", $.Localize("#DOTA_Tooltip_ability_" + itemname));
panel.FindChild("Content").FindChildTraverse("ItemImage").itemname = itemname;
panel.visible = true;
@@ -599,8 +613,8 @@ function ShowPage( index ) {
ContinueButton.SetDialogVariable("continue_text", $.Localize("#DOTA_UI_Confirmation_Continue"));
}
$("#SetupTitle").text = $.Localize("td_ready_title" + index);
$("#SetupDescription").text = $.Localize("td_ready_title" + index + "_desc");
$("#SetupTitle").text = $.Localize("#td_ready_title" + index);
$("#SetupDescription").text = $.Localize("#td_ready_title" + index + "_desc");
}
function OnContinue() {
@@ -723,7 +737,7 @@ function SaveCardGroup() {
}
function RenameCardGroupDialog() {
ShowMessageDialog('RenameCardGroupInput', $.Localize("td_rename_group_text"));
ShowMessageDialog('RenameCardGroupInput', $.Localize("#td_rename_group_text"));
$("#MessageInput").text = $("#CardGroupText").text;
}
@@ -760,7 +774,7 @@ function TrainCard(levelUp) {
}
function ClearCardGroupDialog() {
ShowMessageDialog('ClearCardGroup', $.Localize("td_clear_all_question"));
ShowMessageDialog('ClearCardGroup', $.Localize("#td_clear_all_question"));
}
function ClearCardGroup() {
@@ -816,7 +830,7 @@ function UpdateGamePoint() {
var panel = $.CreatePanel("Panel", DifficultyPanel, "");
panel.BLoadLayoutSnippet("DifficultyContainer");
panel.SetDialogVariableInt("difficulty", i+1);
panel.SetDialogVariable("difficultyText", $.Localize("difficulty_text_" + (i+1)));
panel.SetDialogVariable("difficultyText", $.Localize("#difficulty_text_" + (i+1)));
DifficultyPanel.MoveChildAfter(panel, DifficultyPanel.GetChild(i));
DifficultyContainerList.push(panel);
panel.SetPanelEvent("onactivate", "SelectDifficulty("+i+");");

View File

@@ -164,9 +164,9 @@ TouhouCard.prototype.ShowInfo = function() {
var isItem = this.bIsItem;
var quality = data.quality;
if ( isItem ) {
$("#CardInfoName").text = $.Localize("DOTA_Tooltip_ability_" + data.cardname);
$("#CardInfoName").text = $.Localize("#DOTA_Tooltip_ability_" + data.cardname);
} else {
$("#CardInfoName").text = $.Localize(data.cardname);
$("#CardInfoName").text = $.Localize("#" + data.cardname);
}
var CardInfoContent = $("#CardInfoContent");
@@ -223,12 +223,12 @@ TouhouCard.prototype.ShowInfo = function() {
for (var i = 0; i < 8; i++) {
var abilityname = "thtd_" + data.cardname + "_0" + i;
var key = "DOTA_Tooltip_ability_" + abilityname;
var nameText = $.Localize(key);
if (nameText !== key) {
var nameText = $.Localize("#" + key);
if (nameText !== "#" + key) {
if (nameText.substr(0, 5) === "link_") {
key = nameText.substr(5, nameText.length - 5);
abilityname = key.substr("DOTA_Tooltip_ability_".length, key.length - "DOTA_Tooltip_ability_".length);
nameText = $.Localize(key);
nameText = $.Localize("#" + key);
}
var panel = CardAbilities.GetChild(index++);
if (!panel) {

View File

@@ -1,340 +1,322 @@
"addon"
"addon"
{
//"DOTA_InventoryMenu_Sell" "Sell In Shop"
"DOTA_InventoryMenu_LockCombine" "Lock"
"DOTA_InventoryMenu_UnlockCombine" "Unlock"
//"DOTA_InventoryMenu_LockCombine" "Sell"
//"DOTA_InventoryMenu_UnlockCombine" "Sell"
"DOTA_InventoryMenu_MoveToStash" "RePlace Items"
"pause_game_btn" "Pause Game Forever"
"td_pawn_count" "PAWN AMOUNT{d:count} / {d:max_count}"
"td_food_count" "{d:count} / 12"
"td_food_count_text" "FOOD AMOUNT"
"td_creature_kill_count" "POINT:{d:point} PAWN-KILLING AMOUNT:{d:count}"
"td_creature_kill_count_text" "KILLING AMOUNT"
"td_tower_dps_title" "DAMAGE STATS"
"td_attacking_wave" "WAVE {d:wave}"
"td_type" "TYPE"
"td_auto_save_group" "AUTO SAVE GROUP"
"td_gamepoint_desc" "GAME POINT<br/>CAN BE GAINED BY COMPLETING GAMES. "
"td_card_pool" "CARD DECK"
"td_card_group" "Group"
"td_remove_card" "Remove Card"
"td_show_card_info" "Show Card Info"
"td_select_card" "Select Card"
"td_select_bonus_card" "Select Bonus Card (20 Points)"
"td_select_bonus_card_vip" "Select Bonus Card"
"td_select_battle_bonus_card" "Select Battle Bonus Card"
"td_card_pool_note" "NOTE"
"td_card_pool_note_desc" "Note: Each SSR/SR/R card can only put 5 cards to the card group, and each N card can only put 10 cards to the card group."
"td_clear_all" "CLEAR CARD GROUP"
"td_clear_all_question" "DO YOU SURE CLEAR CARD GROUP?"
"td_rename_group" "RENAME GROUP"
"td_rename_group_text" "Please input new card group name:"
"td_ready_title1" "SETUP CARD GROUP"
"td_ready_title1_desc" "The preparation time is <font color='#FFB207'>5 minutes</font> in a multiplayer time and <font color='#FFB207'>30 minutes</font> in a single person. Please remember the save card group"
"td_ready_title2" "SELECT DIFFICULTY"
"td_ready_title2_desc" ""
"td_ready_title3" "WAITING"
"td_ready_title3_desc" "Waiting other players complete setup"
"donate" "DONATE"
"difficulty_text_1" "NORMAL"
"difficulty_text_2" "EXTRA"
"difficulty_text_3" "UNLIMITED"
"difficulty_text_4" "RANDOM"
"difficulty_text_5" "CHALLENGE"
"difficulty_text_6" "FUNNY"
"difficulty_text_7" "FUNNY RANK"
"td_select_start_card" "Choose initial card : "
"td_rank_list_100" "Top Rank"
"td_rank_list_100_desc" "TOP 100 RANK LIST"
"td_team_rank_list_100" "Top Rank In Team"
"td_team_rank_list_100_desc" "TOP 100 RANK LIST IN TEAM MODE"
"td_rank_list_100_tip" "The maximum wave number required on the list: at the end of the wave, the number of PAWN AMOUNT was not more than 10, and no boom were used. Difficulty 6 to 9 can be either on-single or on-multiplayer. The maximum number of injuries and card information will be recorded on the list. Click to open the rank."
"td_kick_vote" "KickPlayer"
"kick_player_1" "Kick out <font color='#FFB207'>left-top</font> player"
"kick_player_2" "Kick out <font color='#FFB207'>right-top</font> player"
"kick_player_3" "Kick out <font color='#FFB207'>right-bottom</font> player"
"kick_player_4" "Kick out <font color='#FFB207'>left-bottom</font> player"
"kick_player_unauth" "only the player in progress game can vote"
"kick_player_ask" "Are you agree?"
"yes" "Yes"
"no" "No"
"th_ai_choose" "Do you want AI to automatically release the following skills : "
"skill" "Skill"
"td_tutorial_video" "Tutorial"
"td_video_tip" "If you want to watch tutorial videos, you can press F9 to pause the game. It is best to pause the game when you are alone. Do not influence your teammates."
"td_strategy_0_left_title" "【Video】"
"td_strategy_0_main_title" "Comprehensive introduction of short films"
"td_strategy_0_sub_title" "6 minutes video how to play games"
"td_strategy_0_url" "http://static.yueyutech.com/bilibili/index.html?u=Ly9wbGF5ZXIuYmlsaWJpbGkuY29tL3BsYXllci5odG1sP2FpZD00ODQ5ODk0NyZjaWQ9Mzc5NzU3NzgmcGFnZT0x"
"td_strategy_0_image" ""
"td_strategy_0_title1" "Card List"
"td_strategy_0_text1" "Update..."
"td_strategy_0_title2" "Operation method"
"td_strategy_0_text2" ""
"td_strategy_0_title3" "Card Group"
"td_strategy_0_text3" ""
"td_strategy_0_title4" "Station position"
"td_strategy_0_text4" ""
"td_strategy_1_left_title" "【Artifice】"
"td_strategy_1_main_title" "No network single player game method"
"td_strategy_1_sub_title" "Introduction to how to conduct single game and permanent suspension without network or Dota2 maintenance."
"td_strategy_1_url" ""
"td_strategy_1_image" ""
"td_strategy_1_title1" "Turn on the Dota2 console"
"td_strategy_1_text1" "At the starter interface, click Settings , set the startup options in the lower right corner, and enter the -console .Or after entering the game, click on the options, click below to go to the advanced options, and check the Enabled Console below the first row on the left."
"td_strategy_1_title2" "Single player game method"
"td_strategy_1_text2" "This mode can be permanently suspended. After entering the game, press the \ key to open the console, copy and paste the following commands, basically zero traffic.<br/>dota_launch_custom_game 1523213505 touhoutd"
"td_strategy_1_title3" "Disable Dota2 initiator update method"
"td_strategy_1_text3" "After opening the starter, click Download - Pause to stop updating, then press Win + R to open and run. After running the following command, enter the game prompt version and turn it off low (C: Game Dota2 is the installation path, there is a space in front of console).<br/>C:\Game\Dota2\steamapps\common\dota 2 beta\game\bin\win64\dota2.exe console"
"td_strategy_1_title4" "Common path"
"td_strategy_1_text4" "Screenshot : C:\Game\Dota2\steamapps\common\dota 2 beta\game\dota\screenshots<br/><br/>Custom map path : C:\Game\Dota2\steamapps\workshop\content\570\"
"td_strategy_2_left_title" "【Operation】"
"td_strategy_2_main_title" "Novice leisure operation method"
"td_strategy_2_sub_title" "Introduces several sets of operation methods with low operational requirements."
"td_strategy_2_url" ""
"td_strategy_2_image" ""
"td_strategy_2_title1" ""
"td_strategy_2_text1" ""
"td_strategy_2_title2" ""
"td_strategy_2_text2" ""
"td_strategy_2_title3" ""
"td_strategy_2_text3" ""
"td_strategy_2_title4" ""
"td_strategy_2_text4" ""
"td_strategy_3_left_title" ""
"td_strategy_3_main_title" ""
"td_strategy_3_sub_title" ""
"td_strategy_3_url" ""
"td_strategy_3_image" ""
"td_strategy_3_title1" ""
"td_strategy_3_text1" ""
"td_strategy_3_title2" ""
"td_strategy_3_text2" ""
"td_strategy_3_title3" ""
"td_strategy_3_text3" ""
"td_strategy_3_title4" ""
"td_strategy_3_text4" ""
"td_strategy_4_left_title" ""
"td_strategy_4_main_title" ""
"td_strategy_4_sub_title" ""
"td_strategy_4_url" ""
"td_strategy_4_image" ""
"td_strategy_4_title1" ""
"td_strategy_4_text1" ""
"td_strategy_4_title2" ""
"td_strategy_4_text2" ""
"td_strategy_4_title3" ""
"td_strategy_4_text3" ""
"td_strategy_4_title4" ""
"td_strategy_4_text4" ""
"td_strategy_5_left_title" ""
"td_strategy_5_main_title" ""
"td_strategy_5_sub_title" ""
"td_strategy_5_url" ""
"td_strategy_5_image" ""
"td_strategy_5_title1" ""
"td_strategy_5_text1" ""
"td_strategy_5_title2" ""
"td_strategy_5_text2" ""
"td_strategy_5_title3" ""
"td_strategy_5_text3" ""
"td_strategy_5_title4" ""
"td_strategy_5_text4" ""
"td_strategy_6_left_title" ""
"td_strategy_6_main_title" ""
"td_strategy_6_sub_title" ""
"td_strategy_6_url" ""
"td_strategy_6_image" ""
"td_strategy_6_title1" ""
"td_strategy_6_text1" ""
"td_strategy_6_title2" ""
"td_strategy_6_text2" ""
"td_strategy_6_title3" ""
"td_strategy_6_text3" ""
"td_strategy_6_title4" ""
"td_strategy_6_text4" ""
"td_strategy_7_left_title" ""
"td_strategy_7_main_title" ""
"td_strategy_7_sub_title" ""
"td_strategy_7_url" ""
"td_strategy_7_image" ""
"td_strategy_7_title1" ""
"td_strategy_7_text1" ""
"td_strategy_7_title2" ""
"td_strategy_7_text2" ""
"td_strategy_7_title3" ""
"td_strategy_7_text3" ""
"td_strategy_7_title4" ""
"td_strategy_7_text4" ""
"td_strategy_8_left_title" ""
"td_strategy_8_main_title" ""
"td_strategy_8_sub_title" ""
"td_strategy_8_url" ""
"td_strategy_8_image" ""
"td_strategy_8_title1" ""
"td_strategy_8_text1" ""
"td_strategy_8_title2" ""
"td_strategy_8_text2" ""
"td_strategy_8_title3" ""
"td_strategy_8_text3" ""
"td_strategy_8_title4" ""
"td_strategy_8_text4" ""
"td_strategy_9_left_title" ""
"td_strategy_9_main_title" ""
"td_strategy_9_sub_title" ""
"td_strategy_9_url" ""
"td_strategy_9_image" ""
"td_strategy_9_title1" ""
"td_strategy_9_text1" ""
"td_strategy_9_title2" ""
"td_strategy_9_text2" ""
"td_strategy_9_title3" ""
"td_strategy_9_text3" ""
"td_strategy_9_title4" ""
"td_strategy_9_text4" ""
"td_strategy_10_left_title" ""
"td_strategy_10_main_title" ""
"td_strategy_10_sub_title" ""
"td_strategy_10_url" ""
"td_strategy_10_image" ""
"td_strategy_10_title1" ""
"td_strategy_10_text1" ""
"td_strategy_10_title2" ""
"td_strategy_10_text2" ""
"td_strategy_10_title3" ""
"td_strategy_10_text3" ""
"td_strategy_10_title4" ""
"td_strategy_10_text4" ""
"td_strategy_11_left_title" ""
"td_strategy_11_main_title" ""
"td_strategy_11_sub_title" ""
"td_strategy_11_url" ""
"td_strategy_11_image" ""
"td_strategy_11_title1" ""
"td_strategy_11_text1" ""
"td_strategy_11_title2" ""
"td_strategy_11_text2" ""
"td_strategy_11_title3" ""
"td_strategy_11_text3" ""
"td_strategy_11_title4" ""
"td_strategy_11_text4" ""
"td_strategy_12_left_title" ""
"td_strategy_12_main_title" ""
"td_strategy_12_sub_title" ""
"td_strategy_12_url" ""
"td_strategy_12_image" ""
"td_strategy_12_title1" ""
"td_strategy_12_text1" ""
"td_strategy_12_title2" ""
"td_strategy_12_text2" ""
"td_strategy_12_title3" ""
"td_strategy_12_text3" ""
"td_strategy_12_title4" ""
"td_strategy_12_text4" ""
"td_strategy_13_left_title" ""
"td_strategy_13_main_title" ""
"td_strategy_13_sub_title" ""
"td_strategy_13_url" ""
"td_strategy_13_image" ""
"td_strategy_13_title1" ""
"td_strategy_13_text1" ""
"td_strategy_13_title2" ""
"td_strategy_13_text2" ""
"td_strategy_13_title3" ""
"td_strategy_13_text3" ""
"td_strategy_13_title4" ""
"td_strategy_13_text4" ""
"td_strategy_14_left_title" ""
"td_strategy_14_main_title" ""
"td_strategy_14_sub_title" ""
"td_strategy_14_url" ""
"td_strategy_14_image" ""
"td_strategy_14_title1" ""
"td_strategy_14_text1" ""
"td_strategy_14_title2" ""
"td_strategy_14_text2" ""
"td_strategy_14_title3" ""
"td_strategy_14_text3" ""
"td_strategy_14_title4" ""
"td_strategy_14_text4" ""
"td_strategy_15_left_title" ""
"td_strategy_15_main_title" ""
"td_strategy_15_sub_title" ""
"td_strategy_15_url" ""
"td_strategy_15_image" ""
"td_strategy_15_title1" ""
"td_strategy_15_text1" ""
"td_strategy_15_title2" ""
"td_strategy_15_text2" ""
"td_strategy_15_title3" ""
"td_strategy_15_text3" ""
"td_strategy_15_title4" ""
"td_strategy_15_text4" ""
"td_strategy_16_left_title" ""
"td_strategy_16_main_title" ""
"td_strategy_16_sub_title" ""
"td_strategy_16_url" ""
"td_strategy_16_image" ""
"td_strategy_16_title1" ""
"td_strategy_16_text1" ""
"td_strategy_16_title2" ""
"td_strategy_16_text2" ""
"td_strategy_16_title3" ""
"td_strategy_16_text3" ""
"td_strategy_16_title4" ""
"td_strategy_16_text4" ""
"td_strategy_17_left_title" ""
"td_strategy_17_main_title" ""
"td_strategy_17_sub_title" ""
"td_strategy_17_url" ""
"td_strategy_17_image" ""
"td_strategy_17_title1" ""
"td_strategy_17_text1" ""
"td_strategy_17_title2" ""
"td_strategy_17_text2" ""
"td_strategy_17_title3" ""
"td_strategy_17_text3" ""
"td_strategy_17_title4" ""
"td_strategy_17_text4" ""
"td_strategy_18_left_title" ""
"td_strategy_18_main_title" ""
"td_strategy_18_sub_title" ""
"td_strategy_18_url" ""
"td_strategy_18_image" ""
"td_strategy_18_title1" ""
"td_strategy_18_text1" ""
"td_strategy_18_title2" ""
"td_strategy_18_text2" ""
"td_strategy_18_title3" ""
"td_strategy_18_text3" ""
"td_strategy_18_title4" ""
"td_strategy_18_text4" ""
"td_strategy_19_left_title" ""
"td_strategy_19_main_title" ""
"td_strategy_19_sub_title" ""
"td_strategy_19_url" ""
"td_strategy_19_image" ""
"td_strategy_19_title1" ""
"td_strategy_19_text1" ""
"td_strategy_19_title2" ""
"td_strategy_19_text2" ""
"td_strategy_19_title3" ""
"td_strategy_19_text3" ""
"td_strategy_19_title4" ""
"td_strategy_19_text4" ""
"td_strategy_20_left_title" ""
"td_strategy_20_main_title" ""
"td_strategy_20_sub_title" ""
"td_strategy_20_url" ""
"td_strategy_20_image" ""
"td_strategy_20_title1" ""
"td_strategy_20_text1" ""
"td_strategy_20_title2" ""
"td_strategy_20_text2" ""
"td_strategy_20_title3" ""
"td_strategy_20_text3" ""
"td_strategy_20_title4" ""
"td_strategy_20_text4" ""
"DOTA_InventoryMenu_LockCombine" "Lock"
"DOTA_InventoryMenu_UnlockCombine" "Unlock"
"DOTA_InventoryMenu_MoveToStash" "RePlace Items"
"pause_game_btn" "Pause Game Forever"
"continue" "Continue"
"place_item" "Organize Items"
"td_pawn_count" "PAWN AMOUNT{d:count} / {d:max_count}"
"td_food_count" "{d:count} / 12"
"td_food_count_text" "FOOD AMOUNT"
"td_creature_kill_count" "POINT:{d:point} PAWN-KILLING AMOUNT:{d:count}"
"td_creature_kill_count_text" "KILLING AMOUNT"
"td_tower_dps_title" "DAMAGE STATS"
"td_attacking_wave" "WAVE {d:wave}"
"td_type" "TYPE"
"td_random_group" "Random Deck"
"td_gamepoint_desc" "GAME POINT<br/>CAN BE GAINED BY COMPLETING GAMES. "
"td_card_pool" "CARD DECK"
"td_card_group" "Group"
"td_load_tips" "This game can be played locally.<br><br>Don't take the leaderboard too seriously."
"td_train_card_title" "Boost Potential"
"td_train_card_cost" "×{d:amount}"
"td_train_card_question" "Permanently increase card potential, each level requires {d:amount}x Game Points<br><br>Left click for 1 level, right click for 50<br><br>Activate potential by using Awakening for increased stats and improved abilities<br><br>Game Points can be earned from daily chests or leaderboard ranking"
"td_refresh_desc" "Refresh server data"
"td_patron_desc" "If you want to donate, go play the official game"
"td_select_card" "Select Card"
"td_select_start_card" "Choose initial card : "
"td_select_bonus_card_vip" "Select Bonus Card"
"td_select_battle_bonus_card" "Select Battle Bonus Card"
"td_card_pool_note" "NOTE"
"td_card_pool_note_desc" "Note: Each SSR/SR/R card can only put 5 cards to the card group, and each N card can only put 10 cards to the card group."
"td_clear_all" "CLEAR CARD GROUP"
"td_clear_all_question" "DO YOU SURE CLEAR CARD GROUP\?"
"td_rename_group" "RENAME GROUP"
"td_rename_group_text" "Please input new card group name:"
"td_ready_title1" "SETUP CARD GROUP"
"td_ready_title1_desc" "The preparation time is <font color=\'#FFB207\'>5 minutes</font> in a multiplayer time and <font color=\'#FFB207\'>30 minutes</font> in a single person. Please remember the save card group"
"td_ready_title2" "SELECT DIFFICULTY"
"td_ready_title2_desc" "In a tie, lowest difficulty will be picked"
"td_ready_title3" "WAITING"
"td_ready_title3_desc" "Waiting other players complete setup"
"donate" "DONATE"
"sponsor_note" "Note: Amount entered must be <font color=\'#FFB207\'>{s:Amount}</font>or processing will fail<font color=\'#fa5c00\'>Remaining Time:{s:LeftTime}</font>"
"pay_complete" "Completed payment"
"pay_back_button" "返回({d:timeout}"
"pay_tip_mode1" "Can be used to train cards and buy keys"
"pay_tip_mode2" "Permanently upgrade your pet's level to increase the number of treasure chest keys, automatically explode bombs for missed monster overruns, increase your pet's appearance and special effects, gain additional loot options, and more.<br><br>And get special rewards for the duration, including access to 20 deck slots and entertainment mode at any time, view leaderboard lineup breakdown, card skins, new card inclusions, and more."
"td_cosmetic" "Toy"
"difficulty_text_1" "NORMAL"
"difficulty_text_2" "EXTRA"
"difficulty_text_3" "UNLIMITED"
"difficulty_text_4" "RANDOM"
"difficulty_text_5" "CHALLENGE"
"difficulty_text_6" "FUNNY"
"difficulty_text_7" "FUNNY RANK"
"td_rank_list_100" "Top Rank"
"td_rank_list_100_desc" "TOP 100 RANK LIST"
"td_team_rank_list_100" "Peak Top Rank"
"td_team_rank_list_100_desc" "TOP 100 RANK LIST IN PEAK MODE"
"td_rank_list_100_tip" "The maximum wave number required on the list: at the end of the wave, the number of PAWN AMOUNT was not more than 10, and no boom were used. Difficulty 6 to 9 can be either on-single or on-multiplayer. The maximum number of injuries and card information will be recorded on the list. Click to open the rank."
"td_kick_vote" "KickPlayer"
"kick_player_1" "Kick out <font color=\'#FFB207\'>left-top</font> player"
"kick_player_2" "Kick out <font color=\'#FFB207\'>right-top</font> player"
"kick_player_3" "Kick out <font color=\'#FFB207\'>right-bottom</font> player"
"kick_player_4" "Kick out <font color=\'#FFB207\'>left-bottom</font> player"
"kick_player_unauth" "only the player in progress game can vote"
"kick_player_ask" "Are you agree\?"
"yes" "Yes"
"no" "No"
"th_ai_choose" "Do you want AI to automatically release the following skills : "
"skill" "Skill"
"td_tutorial_video" "Tutorial"
"td_video_tip" "If you want to watch tutorial videos, you can press F9 to pause the game. It is best to pause the game when you are alone. Do not influence your teammates."
"td_strategy_0_left_title" "【Video】"
"td_strategy_0_main_title" "Comprehensive introduction of short films"
"td_strategy_0_sub_title" "6 minutes video how to play games"
"td_strategy_0_url" "http://static.yueyutech.com/bilibili/index.html\?u=Ly9wbGF5ZXIuYmlsaWJpbGkuY29tL3BsYXllci5odG1sP2FpZD00ODQ5ODk0NyZjaWQ9Mzc5NzU3NzgmcGFnZT0x"
"td_strategy_0_image" ""
"td_strategy_0_title1" "Card List"
"td_strategy_0_text1" "Update..."
"td_strategy_0_title2" "Operation method"
"td_strategy_0_text2" "The leaderboard will show group details, but avoid mindless copying."
"td_strategy_0_title3" "Card Group"
"td_strategy_0_text3" "You can use Game Points (from daily chests and ranking entries) to strengthen cards potential and boost them with Awakening.<br><br>On infinite potential event day, you'll start with a full potential consumable and 3x 500 wave jump scrolls.<br><br>Normal play goes into the top ranks, using awakening on potential will lead to the Peak Scoreboard.<br><br>You cannot donate on this version. Everyone gets VIP."
"td_strategy_0_title4" "Station position"
"td_strategy_0_text4" "一群76163954二群789182175三群893289514。有关更新讨论、内部代码、宠物小灵\n\t战利品等相关信息可在群里详细了解以及交流开黑等。<br><br>创建房间输入密码开黑,可以永久暂停。本地图掉线或直接关闭游戏将自动永久暂停。小地图上方有永久暂停按钮。<br><br>截图路径C:\\Game\\Dota2\\steamapps\\common\\dota 2 beta\\game\\dota\\screenshots<br>截图快捷键在设置里改默认F6。<br><br>steam启动国服在库Dota2右键属性点设置启动选项输入 -perfectworld "
"td_strategy_1_left_title" "【Artifice】"
"td_strategy_1_main_title" "No network single player game method"
"td_strategy_1_sub_title" "Introduction to how to conduct single game and permanent suspension without network or Dota2 maintenance."
"td_strategy_1_url" ""
"td_strategy_1_image" ""
"td_strategy_1_title1" "Turn on the Dota2 console"
"td_strategy_1_text1" "At the starter interface, click Settings , set the startup options in the lower right corner, and enter the -console .Or after entering the game, click on the options, click below to go to the advanced options, and check the Enabled Console below the first row on the left."
"td_strategy_1_title2" "Single player game method"
"td_strategy_1_text2" "This mode can be permanently suspended. After entering the game, press the \\ key to open the console, copy and paste the following commands, basically zero traffic.<br/>dota_launch_custom_game 1523213505 touhoutd"
"td_strategy_1_title3" "Disable Dota2 initiator update method"
"td_strategy_1_text3" "After opening the starter, click Download - Pause to stop updating, then press Win + R to open and run. After running the following command, enter the game prompt version and turn it off low (C: Game Dota2 is the installation path, there is a space in front of console).<br/>C:\\Game\\Dota2\\steamapps\\common\\dota 2 beta\\game\bin\\win64\\dota2.exe console"
"td_strategy_1_title4" "Common path"
"td_strategy_1_text4" "Screenshot : C:\\Game\\Dota2\\steamapps\\common\\dota 2 beta\\game\\dota\\screenshots<br/><br/>Custom map path : C:\\Game\\Dota2\\steamapps\\workshop\\content\\570\"\n\t"
"td_strategy_2_left_title" "【Video】"
"td_strategy_2_main_title" "Novice leisure operation method"
"td_strategy_2_sub_title" "Introduces several sets of operation methods with low operational requirements."
"td_strategy_2_url" "http://static.yueyutech.com/bilibili/index.html\?u=Ly9wbGF5ZXIuYmlsaWJpbGkuY29tL3BsYXllci5odG1sP2FpZD00ODQ5ODk0NyZjaWQ9Mzc5NzU3NzgmcGFnZT0x"
"td_strategy_2_image" ""
"td_strategy_2_title1" "Lineup Composition"
"td_strategy_2_text1" "Update in progress..."
"td_strategy_2_title2" "Operation Method"
"td_strategy_2_text2" ""
"td_strategy_2_title3" "Deck List"
"td_strategy_2_text3" ""
"td_strategy_2_title4" "Standings"
"td_strategy_2_text4" ""
"td_strategy_3_left_title" "【Video】"
"td_strategy_3_main_title" "Newbie help, complete collection of finishing"
"td_strategy_3_sub_title" "P2秋静叶开局运营相对双白要轻松许多没有什么严格要求懒人必备"
"td_strategy_3_url" "http://static.yueyutech.com/bilibili/index.html\?u=Ly9wbGF5ZXIuYmlsaWJpbGkuY29tL3BsYXllci5odG1sP2FpZD00ODQ5ODk0NyZjaWQ9Mzc5NzU3NzgmcGFnZT0y"
"td_strategy_3_image" ""
"td_strategy_3_title1" "Lineup Composition"
"td_strategy_3_text1" "Update in progress..."
"td_strategy_3_title2" "Operation Method"
"td_strategy_3_text2" ""
"td_strategy_3_title3" "Deck List"
"td_strategy_3_text3" ""
"td_strategy_3_title4" "Standings"
"td_strategy_3_text4" ""
"td_strategy_4_left_title" "【视频】"
"td_strategy_4_main_title" "新手必看,最全整理合集"
"td_strategy_4_sub_title" "P3卡组搭配简单来说就是多看多想每个卡都有什么作用"
"td_strategy_4_url" "http://static.yueyutech.com/bilibili/index.html\?u=Ly9wbGF5ZXIuYmlsaWJpbGkuY29tL3BsYXllci5odG1sP2FpZD00ODQ5ODk0NyZjaWQ9Mzc5NzU3NzgmcGFnZT0z"
"td_strategy_4_image" ""
"td_strategy_4_title1" "Lineup Composition"
"td_strategy_4_text1" "Update in progress..."
"td_strategy_4_title2" "Operation Method"
"td_strategy_4_text2" ""
"td_strategy_4_title3" "Deck List"
"td_strategy_4_text3" ""
"td_strategy_4_title4" "Standings"
"td_strategy_4_text4" ""
"td_strategy_5_left_title" "【视频】"
"td_strategy_5_main_title" "新手必看,最全整理合集"
"td_strategy_5_sub_title" "P4娱乐模式运营-摆位(希望每个人都有自己的思路,不要一味模仿)"
"td_strategy_5_url" "http://static.yueyutech.com/bilibili/index.html\?u=Ly9wbGF5ZXIuYmlsaWJpbGkuY29tL3BsYXllci5odG1sP2FpZD00ODQ5ODk0NyZjaWQ9Mzc5NzU3NzgmcGFnZT00"
"td_strategy_5_image" ""
"td_strategy_5_title1" "Lineup Composition"
"td_strategy_5_text1" "Update in progress..."
"td_strategy_5_title2" "Operation Method"
"td_strategy_5_text2" ""
"td_strategy_5_title3" "Deck List"
"td_strategy_5_text3" ""
"td_strategy_5_title4" "Standings"
"td_strategy_5_text4" ""
"td_strategy_6_left_title" "【Operations】"
"td_strategy_6_main_title" "Newbie Leisure Operation Method"
"td_strategy_6_sub_title" "Low Requirement Operation Method"
"td_strategy_6_url" ""
"td_strategy_6_image" ""
"td_strategy_6_title1" "Autumn, rats and daiyousei"
"td_strategy_6_text1" "Deck Suggests 1xDaiyousei, 5xMinoriko, 4xCoin Box, 3xLunasa, 2xKogasa, 2xSatori(or other slow)。<br><br>守家20 30 40波后分别是3星露娜3星小伞4星满培露娜3星小伞5星露娜4星满培小伞或双4星露娜带装备或4星露娜5星帕秋莉。<br><br>开局秋瓤子开抽两秋静叶并满培11波前只留露娜和老鼠其他全卖。场上妖精最小化保证守家要求即可抽卖卖抽。11波后拔下三星瓤子换鼠如有减速如觉上场。 双秋满培后R卡不买开始抽干卡池一二星狗粮升级只买药。25到30波第一秋一收给老鼠28到33波第二秋一收给另一个老鼠再升个三星和二星变二星狗粮秋二鼠成型。<br><br>2500开抽继续抽干卡池秋二收后换大妖精上场秒升级到4星此时场上只有3收益卡 露娜小伞 减速6个妖精位根据阵容需要算好妖精数量如21个17个零头妖精要和无尽后不需要的4星卡刚好成4个剩余妖精养到3星此后不再上妖精上阵容卡升级。<br><br>保底五星算法:露娜大妖精双鼠4个五星21个狗粮5个多出1个妖精加小伞秋换后的两个阵容4星卡刚好10个五星。"
"td_strategy_6_title2" "Autumn, two rats and laziness"
"td_strategy_6_text2" "After first minoriko just feed, two rats and autumn to the end, guaranteed 7x 5 stars"
"td_strategy_6_title3" "Shou, Seiga & Shinki Operation"
"td_strategy_6_text3" "Start white or minorikospeed 5 star Seigaspeed 5 star Shinki5 star shoucan go about 12 5 stars。Pay attention to collectingset seiga so enemies die in her aura."
"td_strategy_6_title4" "Second upgrade tips"
"td_strategy_6_text4" "Use fairies in place of buying nostrums directly, 4x 4 star fairies are cheaper to make than 4x 4 star nostrums."
"td_strategy_7_left_title" "【Lineup】"
"td_strategy_7_main_title" "March Precision Team"
"td_strategy_7_sub_title" "最低5个五星的挂机流过Extra的阵容"
"td_strategy_7_url" ""
"td_strategy_7_image" ""
"td_strategy_7_title1" "Lineup Composition"
"td_strategy_7_text1" "5星满培露娜满培觉满培斯塔红美铃桑尼。<br><br>可选5星觉醒露米娅满培火焰猫满培八云紫。<br><br>其他4星十六夜3星梅蒂欣2个1星满培慧音。<br><br>如果5星不足可觉醒露米娅后用秋瓤子把她五星再换到别人。<br><br>装备露娜4神枪2船勾或玉斯塔4相机2玉觉4桨2勾一梅蒂欣4核棒露米娅4狗牙。"
"td_strategy_7_title2" "Operation Method"
"td_strategy_7_text2" "随意。"
"td_strategy_7_title3" "Deck List"
"td_strategy_7_text3" "SSR卡2八云紫4神枪4相机。<br><br>SR卡2上白泽慧音2火焰猫十六夜4船勾4核棒4狗牙4炸弹博丽护身符4其它如晕刀。<br><br>R卡5秋静叶3纳兹林3露娜2斯塔桑尼2古明地觉2梅蒂欣红美铃露米娅4玉4月耀4人形4御币4船浆。"
"td_strategy_7_title4" ""
"td_strategy_7_text4" ""
"td_strategy_8_left_title" "【Lineup】"
"td_strategy_8_main_title" "Marisa Team"
"td_strategy_8_sub_title" "最低6个五星的挂机流过Extra的阵容"
"td_strategy_8_url" ""
"td_strategy_8_image" ""
"td_strategy_8_title1" "Lineup Composition"
"td_strategy_8_text1" "五星:满培魔理沙,随缘培大妖精,两个满培帕秋莉,满培小恶魔,满培蕾蒂。<br><br>可选五星:满培琪露诺,随缘培八云紫。<br><br>其他三星灵梦2个三星梅蒂欣一星玲仙。<br><br>湖葬帕秋莉放琪露诺旁必须把湖葬帕秋莉放最前面带4核棒。魔理沙4相机2玉。"
"td_strategy_8_title2" "Operation Method"
"td_strategy_8_text2" "随意。"
"td_strategy_8_title3" "Deck List"
"td_strategy_8_text3" "SSR卡2个大妖精2个八云紫神琦灵梦4个相机。<br><br>SR卡 3个帕秋莉2个魔理沙玲仙4船勾4核棒4炸弹博丽护身符。<br><br>R卡5秋静叶4御币3老鼠4露娜2琪露诺2小恶魔2雷帝2梅蒂欣4玉4月耀4人形4船桨。"
"td_strategy_8_title4" ""
"td_strategy_8_text4" ""
"td_strategy_9_left_title" "【Lineup】"
"td_strategy_9_main_title" "Yuyuko Team"
"td_strategy_9_sub_title" "最低5个五星的挂机流过Extra的阵容"
"td_strategy_9_url" ""
"td_strategy_9_image" ""
"td_strategy_9_title1" "Lineup Composition"
"td_strategy_9_text1" "五星4个满培幽幽子红美铃。<br><br>可选五星:八云蓝,满培八云紫。<br><br>其他一星挂件妖梦和橙三星梅蒂欣一星玲仙或4星十六夜一星满培慧音切白泽关ai。<br><br>装备4相机、4玉、4月弩、4晕刀全部拆成两件套给幽幽子4核棒给八云蓝。"
"td_strategy_9_title2" "Operation Method"
"td_strategy_9_text2" "随意。前期减速琪露诺带4人形后换4星八云蓝带核棒。"
"td_strategy_9_title3" "Deck List"
"td_strategy_9_text3" "SSR卡2八云紫大妖精御币4相机。<br><br>SR卡2慧音5幽幽子八云蓝魂魄妖梦玲仙或十六夜博丽护身符4核棒4晕刀3炸弹。<br><br>R卡5秋静叶4纳兹林红美铃梅蒂欣5露娜2小伞琪露诺 4御币4玉4月弩4月耀4人形。"
"td_strategy_9_title4" ""
"td_strategy_9_text4" ""
"td_strategy_10_left_title" "【Lineup】"
"td_strategy_10_main_title" "Traditional Shrine Team"
"td_strategy_10_sub_title" "最低5个五星的轻松过Extra的阵容"
"td_strategy_10_url" ""
"td_strategy_10_image" ""
"td_strategy_10_title1" "Lineup Composition"
"td_strategy_10_text1" "五星:满培神子,满培青娥,满培减抗三人组帕秋莉小恶魔雷帝。<br><br>可选五星2个满培苏我2个满培僵尸。<br><br>其他:四星满培琪露诺,另一个四星苏我,一星布都。<br><br>装备神子4相机2玉青娥4船桨2船勾帕秋莉4核棒一个僵尸4狗牙一个僵尸青娥技能。"
"td_strategy_10_title2" "Operation Method"
"td_strategy_10_text2" "秋二鼠大妖精。"
"td_strategy_10_title3" "Deck List"
"td_strategy_10_text3" "SSR卡2神子大妖精御币4机机2八卦。<br><br>SR卡2霍青娥2帕秋莉3苏我物理布都4狗牙4核棒3炸弹2船勾博丽护身符。<br><br>R卡3 纳兹林2雷蒂2琪露诺3露娜2小恶魔5秋静叶3宫古芳香4玉4船浆4月耀4人形4御币。"
"td_strategy_10_title4" "Standings"
"td_strategy_10_text4" "只有高波文文会漏,要备炸弹。"
"td_strategy_11_left_title" "【Lineup】"
"td_strategy_11_main_title" "纯粹神灵庙队"
"td_strategy_11_sub_title" "7个五星的挂机流过Extra的阵容"
"td_strategy_11_url" ""
"td_strategy_11_image" ""
"td_strategy_11_title1" "Lineup Composition"
"td_strategy_11_text1" "五星:满培神子,满培青娥,桑尼,辉夜(不卡科技),满培觉,满培紫,红美铃。<br><br>其它2个四星宫古芳香2个三星梅蒂欣一星满培上白泽慧音。<br><br>装备神子4相机2玉青娥4船桨2船勾桑尼4核棒一个僵尸4狗牙一个僵尸青娥技能。"
"td_strategy_11_title2" "Operation Method"
"td_strategy_11_text2" "随意。"
"td_strategy_11_title3" "Deck List"
"td_strategy_11_text3" "SSR卡2神子2八云紫神绮御币或大妖精4相机。<br><br>SR卡2霍青娥2上白泽慧音辉夜4狗牙4核棒4炸弹4船勾博丽护身符。<br><br>R卡3 纳兹林桑尼2古明地觉2梅蒂欣红美铃3露娜3宫古芳香5秋静叶4玉4船浆4月耀4人形4御币。"
"td_strategy_11_title4" ""
"td_strategy_11_text4" ""
"td_strategy_12_left_title" "【Lineup】"
"td_strategy_12_main_title" "物理妹红或布都队"
"td_strategy_12_sub_title" "最低8个五星的挂机流过Extra的阵容"
"td_strategy_12_url" ""
"td_strategy_12_image" ""
"td_strategy_12_title1" "Lineup Composition"
"td_strategy_12_text1" "妹红只要攻击力和攻速能量不需要因为培养加攻速可以不用再加需要恋恋的加1000能量技能还加攻击妹红不吃十六夜的刷新。<br><br>布都比妹红伤害要高且稳定,两阵容一样。<br><br>五星满培腾原妹红满培小伞关ai满培帕秋莉米斯蒂亚犬走桦上白泽慧音满培古明地觉古明地恋辉夜。<br><br>可选五星:满培八云紫(最好五星,帕秋莉也可以四星)。<br><br>其他2个三量梅蒂欣。<br><br>用布都时将妹红、慧音换成布都、青娥给攻速buff即可布都伤害高攻击力不需要拉满要攻速。<br><br>装备妹红4太阳伞2月兔晕刀觉4船浆2莱瓦丁八云紫4月耀一个梅蒂欣4核棒其它随意。"
"td_strategy_12_title2" "Operation Method"
"td_strategy_12_text2" "秋二鼠大妖精。"
"td_strategy_12_title3" "Deck List"
"td_strategy_12_text3" "SSR卡2古明地恋大妖精3八云紫2御币2莱瓦丁。抽干即满培紫<br><br>SR卡辉夜上白泽慧音2帕秋莉玲仙2妹红4核棒4炸弹2月兔博丽护身符。<br><br>R卡3 纳兹林2梅蒂欣犬走桦4露娜米斯蒂娅2多多良小伞5秋静叶2古明地觉4船浆4月耀4人形4御币4太阳伞。"
"td_strategy_12_title4" ""
"td_strategy_12_text4" ""
"td_strategy_13_left_title" "【Lineup】"
"td_strategy_13_main_title" "纯狐妹红或布都队"
"td_strategy_13_sub_title" "最低6个五星的挂机流过Extra的阵容"
"td_strategy_13_url" ""
"td_strategy_13_image" ""
"td_strategy_13_title1" "Lineup Composition"
"td_strategy_13_text1" "纯狐一技能buff之后直接按技能伤害造成纯粹伤害。<br><br>五星:满培腾原妹红或物部布都,米斯蒂亚,上白泽慧音,古明地恋,霍青娥,满培八云紫,满培古明地觉(可选)。<br><br>其他2个三量梅蒂欣一星2培八云紫一星满培上白泽慧音纯狐。<br><br>装备:妹红/布都4太阳伞2月兔五星八云紫4月耀一星慧音4狗牙切白泽关AI一个梅蒂欣4核棒觉4人形。<br><br>所有buff给妹红/布都恋恋的能量纯狐一技能五星慧音人形态1技能开AI霍青娥的攻速。辉夜给刷个攻击力和攻速buff。"
"td_strategy_13_title2" "Operation Method"
"td_strategy_13_text2" "秋二鼠转霍青娥。"
"td_strategy_13_title3" "Deck List"
"td_strategy_13_text3" "SSR卡纯狐古明地恋4八云紫4御币。抽干即满培和二培就够了<br><br>SR卡2妹红或物部布都霍青娥2辉夜2上白泽慧音4核棒4狗牙4炸弹2月兔博丽护身符。<br><br>R卡5 纳兹林2梅蒂欣5露娜米斯蒂娅多多良小伞5秋静叶5古明地觉4月耀4人形4御币4太阳伞。"
"td_strategy_13_title4" ""
"td_strategy_13_text4" ""
"td_strategy_14_left_title" "【Lineup】"
"td_strategy_14_main_title" "风见花香队"
"td_strategy_14_sub_title" "最低6个五星的挂机流过Extra的阵容"
"td_strategy_14_url" ""
"td_strategy_14_image" ""
"td_strategy_14_title1" "Lineup Composition"
"td_strategy_14_text1" "五星:满培风见花香,满培火焰猫磷,桑尼,红美铃,满培古明地觉,古明地恋。<br><br>可选五星:满培八云紫,觉醒露米娅(五星觉醒后和四星换)。<br><br>其他:四星十六夜,四星路空,三量梅蒂欣,一星满培上白泽慧音。<br><br>十六夜刷新路空慧音切白泽关AI风见花香幻像放对面觉旁边。<br><br>古明地恋换成三星梅蒂欣可加强对文文控制但60波后辉夜会挤爆GG。<br><br>装备风见花香4相机2玉觉4人形2船勾八云紫4月耀一个梅蒂欣4核棒火焰猫磷4船浆2船勾露米娅2狗牙。"
"td_strategy_14_title2" "Operation Method"
"td_strategy_14_text2" "随意。"
"td_strategy_14_title3" "Deck List"
"td_strategy_14_text3" "SSR卡2风见花香2八云紫神琦古明地恋4相机。<br><br>SR卡辉夜2上白泽慧音2火焰猫磷路空十六夜4核棒2狗牙4船勾4炸弹博丽护身符。<br><br>R卡3 纳兹林2梅蒂欣4露娜多多良小伞5秋静叶2古明地觉桑尼红美铃露米娅4玉4船浆4月耀4人形4御币。"
"td_strategy_14_title4" ""
"td_strategy_14_text4" ""
"td_strategy_15_left_title" "【Lineup】"
"td_strategy_15_main_title" "二小组队"
"td_strategy_15_sub_title" "最低8个五星的轻松过Extra的阵容"
"td_strategy_15_url" ""
"td_strategy_15_image" ""
"td_strategy_15_title1" "Lineup Composition"
"td_strategy_15_text1" "五星:满培二小组(芙兰朵露),满培妹红,满培古明地觉,古明地恋,满培小伞,犬走桦,米斯蒂娅,满培帕秋莉,满培八云紫(可选)。<br><br>其他四星十六夜2个三量梅蒂欣。<br><br>十六夜刷新二小姐恋恋给buff妹红。<br><br>装备二小组4镰刀2莱瓦汀妹红4太阳伞2月兔觉4船浆恋4人形紫4月耀一梅蒂欣4核棒。辉夜刷个加伤buff。"
"td_strategy_15_title2" "Operation Method"
"td_strategy_15_text2" "秋二鼠大妖精。"
"td_strategy_15_title3" "Deck List"
"td_strategy_15_text3" "SSR卡2芙兰朵露2八云紫大妖精古明地恋2莱瓦汀2博丽御币。<br><br>SR卡辉夜2帕秋莉2腾原妹红十六夜风祝御币4核棒4镰刀2月兔4炸弹博丽护身符。<br><br>R卡3 纳兹林2梅蒂欣4露娜犬走桦米斯蒂娅2多多良小伞5秋静叶2古明地觉4太阳伞4船浆4月耀4人形4御币。"
"td_strategy_15_title4" "Standings"
"td_strategy_15_text4" "不能完全挂机怕60波后辉夜必炸、上白泽慧音起手电一个、文文炸或电"
"td_strategy_16_left_title" "【Lineup】"
"td_strategy_16_main_title" "大小姐队"
"td_strategy_16_sub_title" "最低7个五星的挂机流过Extra的阵容"
"td_strategy_16_url" ""
"td_strategy_16_image" ""
"td_strategy_16_title1" "Lineup Composition"
"td_strategy_16_text1" "五星:满培大小姐(蕾米莉亚),大妖精(连大小姐),满培帕秋莉切水银,满培帕秋莉切湖葬,满培小恶魔,满培雷蒂,满培八云紫。<br><br>其他四星十六夜刷新大小姐四星觉醒露米娅五星觉醒用秋换成四星2个三量梅蒂欣四星满培琪露诺。<br><br>装备大小组4相机2玉湖葬帕秋莉4核棒2玉露米娅4狗牙紫4月耀琪露诺4人形。"
"td_strategy_16_title2" "Operation Method"
"td_strategy_16_text2" "秋二鼠大妖精。"
"td_strategy_16_title3" "Deck List"
"td_strategy_16_text3" "SSR卡2蕾米莉亚2八云紫大妖精神琦4相机。<br><br>SR卡辉夜3帕秋莉十六夜4核棒4狗牙4炸弹博丽护身符。<br><br>R卡3 纳兹林2梅蒂欣3露娜2蕾蒂2小恶魔2琪露诺5秋静叶露米娅4玉4船浆4月耀4人形4御币。"
"td_strategy_16_title4" "Standings"
"td_strategy_16_text4" "60波后文文没事辉夜打了几把没事保险的话炸一下。"
"td_strategy_17_left_title" "【Lineup】"
"td_strategy_17_main_title" "Team Patchouli"
"td_strategy_17_sub_title" "7个五星的挂机流过Extra的阵容"
"td_strategy_17_url" ""
"td_strategy_17_image" ""
"td_strategy_17_title1" "Lineup Composition"
"td_strategy_17_text1" "五星3个满培帕秋莉大妖精满培小恶魔满培雷蒂满培八云紫。<br><br>其他2个三量梅蒂欣四星满培琪露诺一星满培上白泽慧音四星觉醒露米娅五星觉醒用秋换成四星。<br><br>装备能量最高的湖葬帕秋莉4相机2玉且大妖精连次之湖葬帕秋莉4核棒2玉水银帕秋莉2八卦小恶魔4船浆2船沟紫4月耀琪露诺4人形。<br><br>辉夜给输出刷个加伤buff给露米娅和上白泽慧音攻速buff。"
"td_strategy_17_title2" "Operation Method"
"td_strategy_17_text2" "秋二鼠大妖精。"
"td_strategy_17_title3" "Deck List"
"td_strategy_17_text3" "SSR卡2八云紫大妖精神琦4相机2八卦。<br><br>SR卡辉夜4帕秋莉2上白泽慧音4核棒2船勾4炸弹博丽护身符。<br><br>R卡3 纳兹林2梅蒂欣3露娜2蕾蒂2小恶魔2琪露诺5秋静叶露米娅4玉4船浆4月耀4人形4御币。"
"td_strategy_17_title4" "Standings"
"td_strategy_17_text4" "70波文文不漏高波辉夜交炸防脸黑。"
"td_strategy_18_left_title" "【Lineup】"
"td_strategy_18_main_title" "Kaguya Team"
"td_strategy_18_sub_title" "7个五星的挂机流过Extra的阵容"
"td_strategy_18_url" ""
"td_strategy_18_image" ""
"td_strategy_18_title1" "Lineup Composition"
"td_strategy_18_text1" "五星2个满培辉夜桑尼古明地恋满培古明地觉满培八云紫满培火焰猫磷。<br><br>其他2个三星梅蒂欣一星满培上白泽慧音一星八云紫一星满培帕秋莉。<br><br>装备主辉夜4相机2玉火焰猫磷2船勾2神枪觉4船浆2船勾月耀和人形给两个紫最前面的梅蒂欣4核棒。<br><br>将辉夜摆好位置后再刷辉夜科技给辉夜和古明地觉、火焰猫磷刷个加伤buff。恋恋给辉夜加能量buff。帕秋莉切湖葬。另外两个紫只需一个5星多个会火车会重合放。"
"td_strategy_18_title2" "Operation Method"
"td_strategy_18_text2" "随意。"
"td_strategy_18_title3" "Deck List"
"td_strategy_18_text3" "SSR卡2八云紫神琦古明地恋4相机2神枪。<br><br>SR卡3辉夜2上白泽慧音2火焰猫磷2帕秋莉4核棒4船勾4炸弹博丽护身符。<br><br>R卡5 纳兹林2梅蒂欣桑尼5露娜2古明地觉5秋静叶4玉4船浆4月耀4人形4御币。"
"td_strategy_18_title4" "Standings"
"td_strategy_18_text4" "全程挂机。"
}

File diff suppressed because it is too large Load Diff

View File

@@ -8394,7 +8394,7 @@
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL"
"MaxLevel" "1"
"MaxLevel" "5"
"AbilityCooldown" "5"
"AbilityManaCost" "0"
// Stats

View File

@@ -344,7 +344,7 @@ DataService.AbilityTable = {
[2] = {["thtd_satori_01"] = 2,["thtd_satori_02"] = 0},
[3] = {["thtd_satori_01"] = 3,["thtd_satori_02"] = 0},
[4] = {["thtd_satori_01"] = 4,["thtd_satori_02"] = 1},
[5] = {["thtd_satori_01"] = 5,["thtd_satori_02"] = 1},
[5] = {["thtd_satori_01"] = 5,["thtd_satori_02"] = 2},
},
["iku"] = {
[1] = {["thtd_iku_01"] = 1,["thtd_iku_02"] = 0},
@@ -573,10 +573,10 @@ DataService.AbilityTable = {
["sanae"] =
{
[1] = {["thtd_sanae_01"] = 1,["thtd_sanae_02"] = 1,["thtd_sanae_03"] = 0,["thtd_sanae_04"] = 0},
[2] = {["thtd_sanae_01"] = 2,["thtd_sanae_02"] = 1,["thtd_sanae_03"] = 0,["thtd_sanae_04"] = 0},
[3] = {["thtd_sanae_01"] = 3,["thtd_sanae_02"] = 1,["thtd_sanae_03"] = 0,["thtd_sanae_04"] = 0},
[4] = {["thtd_sanae_01"] = 4,["thtd_sanae_02"] = 1,["thtd_sanae_03"] = 1,["thtd_sanae_04"] = 0},
[5] = {["thtd_sanae_01"] = 5,["thtd_sanae_02"] = 1,["thtd_sanae_03"] = 1,["thtd_sanae_04"] = 1},
[2] = {["thtd_sanae_01"] = 2,["thtd_sanae_02"] = 2,["thtd_sanae_03"] = 0,["thtd_sanae_04"] = 0},
[3] = {["thtd_sanae_01"] = 3,["thtd_sanae_02"] = 3,["thtd_sanae_03"] = 0,["thtd_sanae_04"] = 0},
[4] = {["thtd_sanae_01"] = 4,["thtd_sanae_02"] = 4,["thtd_sanae_03"] = 1,["thtd_sanae_04"] = 0},
[5] = {["thtd_sanae_01"] = 5,["thtd_sanae_02"] = 5,["thtd_sanae_03"] = 1,["thtd_sanae_04"] = 1},
},
["kanako"] =
@@ -910,11 +910,13 @@ DataService.ComboGroupings = {
["chen_yukari_ran"] = {"chen", "yukari", "ran"},
["yoshika_seiga"] = {"yoshika", "seiga"},
["rumia_reimu"] = {"rumia", "reimu"},
["wriggle_rumia"] = {"wriggle", "rumia"},
["meirin_sakuya"] = {"meirin", "sakuya"},
["tenshi_iku"] = {"tenshi", "iku"},
["junko_hecatia"] = {"junko", "hecatia"},
["junko_hecatia"] = {"junko", "hecatia"},
["daiyousei_cirno"] = {"daiyousei", "cirno"}
["daiyousei_cirno"] = {"daiyousei", "cirno"},
["luna_star_sunny"] = {"sunny", "star", "luna"}
}
function DataService:GetConfig()

View File

@@ -1,20 +1,25 @@
import vdf
import sys
def main(english_keyfile: str, chinese_keyfile: str, output_file: str):
chinese = vdf.load(open(chinese_keyfile, encoding='utf-16-le'), mapper=vdf.VDFDict)['lang']['Tokens']
english = vdf.load(open(english_keyfile), mapper=vdf.VDFDict)['lang']['Tokens']
output = vdf.VDFDict()
output['lang'] = vdf.VDFDict()
output['lang']['Language'] = "english"
output['lang']['Tokens'] = vdf.VDFDict()
output_tokens = output['lang']['Tokens']
for key in chinese:
#print(key)
if key in english.keys():
output_tokens[key] = english[key]
def copy_kvs(english_keys: vdf.VDFDict, chinese_keys: vdf.VDFDict, output: vdf.VDFDict):
for key in chinese_keys:
if not isinstance(chinese_keys[key], str):
output[key] = vdf.VDFDict()
copy_kvs(english_keys[key], chinese_keys[key], output[key])
elif key in english_keys and len(english_keys[key]) > 0:
output[key] = english_keys[key]
else:
output_tokens[key] = chinese[key]
output[key] = chinese_keys[key]
def main(english_keyfile: str, chinese_keyfile: str, output_file: str, chinese_encoding: str, english_encoding: str):
if chinese_encoding is None:
chinese_encoding = 'utf8'
if english_encoding is None:
english_encoding = 'utf8'
chinese = vdf.load(open(chinese_keyfile, encoding=chinese_encoding), mapper=vdf.VDFDict)
english = vdf.load(open(english_keyfile, encoding=english_encoding), mapper=vdf.VDFDict)
output = vdf.VDFDict()
copy_kvs(english, chinese, output)
vdf.dump(output, open(output_file, 'w'),pretty=True)
args = sys.argv[1:]
main(args[0], args[1], args[2])
main(args[0], args[1], args[2], args[3], args[4])

0
tools/test.out Normal file
View File