Commit da563821 authored by Dark Zane's avatar Dark Zane Committed by GitHub

Merge branch 'fallenstardust:master' into master

parents 07eb9912 84aaace6
...@@ -220,27 +220,29 @@ bool ClientCard::client_card_sort(ClientCard* c1, ClientCard* c2) { ...@@ -220,27 +220,29 @@ bool ClientCard::client_card_sort(ClientCard* c1, ClientCard* c2) {
return cp1 < cp2; return cp1 < cp2;
if(c1->location != c2->location) if(c1->location != c2->location)
return c1->location < c2->location; return c1->location < c2->location;
if (c1->location & LOCATION_OVERLAY) { if (c1->location == LOCATION_OVERLAY) {
if (c1->overlayTarget != c2->overlayTarget) if (c1->overlayTarget != c2->overlayTarget)
return c1->overlayTarget->sequence < c2->overlayTarget->sequence; return c1->overlayTarget->sequence < c2->overlayTarget->sequence;
else else
return c1->sequence < c2->sequence; return c1->sequence < c2->sequence;
} }
else { else if (c1->location == LOCATION_DECK) {
if(c1->location & (LOCATION_DECK | LOCATION_GRAVE | LOCATION_REMOVED | LOCATION_EXTRA)) { return c1->sequence > c2->sequence;
auto it1 = std::find_if(mainGame->dField.chains.rbegin(), mainGame->dField.chains.rend(), [c1](const ChainInfo& ch) { }
return c1 == ch.chain_card || ch.target.find(c1) != ch.target.end(); else if (c1->location & (LOCATION_GRAVE | LOCATION_REMOVED | LOCATION_EXTRA)) {
}); auto it1 = std::find_if(mainGame->dField.chains.rbegin(), mainGame->dField.chains.rend(), [c1](const ChainInfo& ch) {
auto it2 = std::find_if(mainGame->dField.chains.rbegin(), mainGame->dField.chains.rend(), [c2](const ChainInfo& ch) { return c1 == ch.chain_card || ch.target.find(c1) != ch.target.end();
return c2 == ch.chain_card || ch.target.find(c2) != ch.target.end(); });
}); auto it2 = std::find_if(mainGame->dField.chains.rbegin(), mainGame->dField.chains.rend(), [c2](const ChainInfo& ch) {
if(it1 != mainGame->dField.chains.rend() || it2 != mainGame->dField.chains.rend()) { return c2 == ch.chain_card || ch.target.find(c2) != ch.target.end();
return it1 < it2; });
} if (it1 != mainGame->dField.chains.rend() || it2 != mainGame->dField.chains.rend()) {
return c1->sequence > c2->sequence; return it1 < it2;
} }
else return c1->sequence > c2->sequence;
return c1->sequence < c2->sequence; }
else {
return c1->sequence < c2->sequence;
} }
} }
} }
...@@ -139,7 +139,7 @@ void ClientField::Initial(int player, int deckc, int extrac) { ...@@ -139,7 +139,7 @@ void ClientField::Initial(int player, int deckc, int extrac) {
deck[player].push_back(pcard); deck[player].push_back(pcard);
pcard->owner = player; pcard->owner = player;
pcard->controler = player; pcard->controler = player;
pcard->location = 0x1; pcard->location = LOCATION_DECK;
pcard->sequence = i; pcard->sequence = i;
pcard->position = POS_FACEDOWN_DEFENSE; pcard->position = POS_FACEDOWN_DEFENSE;
GetCardLocation(pcard, &pcard->curPos, &pcard->curRot, true); GetCardLocation(pcard, &pcard->curPos, &pcard->curRot, true);
...@@ -149,7 +149,7 @@ void ClientField::Initial(int player, int deckc, int extrac) { ...@@ -149,7 +149,7 @@ void ClientField::Initial(int player, int deckc, int extrac) {
extra[player].push_back(pcard); extra[player].push_back(pcard);
pcard->owner = player; pcard->owner = player;
pcard->controler = player; pcard->controler = player;
pcard->location = 0x40; pcard->location = LOCATION_EXTRA;
pcard->sequence = i; pcard->sequence = i;
pcard->position = POS_FACEDOWN_DEFENSE; pcard->position = POS_FACEDOWN_DEFENSE;
GetCardLocation(pcard, &pcard->curPos, &pcard->curRot, true); GetCardLocation(pcard, &pcard->curPos, &pcard->curRot, true);
...@@ -215,6 +215,9 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -215,6 +215,9 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
pcard->sequence = 0; pcard->sequence = 0;
} }
pcard->is_reversed = false; pcard->is_reversed = false;
pcard->ClearData();
pcard->ClearTarget();
SetShowMark(pcard, false);
break; break;
} }
case LOCATION_HAND: { case LOCATION_HAND: {
......
...@@ -2747,19 +2747,19 @@ void ClientField::ShowCancelOrFinishButton(int buttonOp) { ...@@ -2747,19 +2747,19 @@ void ClientField::ShowCancelOrFinishButton(int buttonOp) {
void ClientField::SetShowMark(ClientCard* pcard, bool enable) { void ClientField::SetShowMark(ClientCard* pcard, bool enable) {
if(pcard->equipTarget) if(pcard->equipTarget)
pcard->equipTarget->is_showequip = enable; pcard->equipTarget->is_showequip = enable;
for(auto cit = pcard->equipped.begin(); cit != pcard->equipped.end(); ++cit) for (auto& card : pcard->equipped)
(*cit)->is_showequip = enable; card->is_showequip = enable;
for(auto cit = pcard->cardTarget.begin(); cit != pcard->cardTarget.end(); ++cit) for (auto& card : pcard->cardTarget)
(*cit)->is_showtarget = enable; card->is_showtarget = enable;
for(auto cit = pcard->ownerTarget.begin(); cit != pcard->ownerTarget.end(); ++cit) for (auto& card : pcard->ownerTarget)
(*cit)->is_showtarget = enable; card->is_showtarget = enable;
for(auto chit = chains.begin(); chit != chains.end(); ++chit) { for (auto& ch : chains) {
if(pcard == chit->chain_card) { if (pcard == ch.chain_card) {
for(auto tgit = chit->target.begin(); tgit != chit->target.end(); ++tgit) for (auto& tg : ch.target)
(*tgit)->is_showchaintarget = enable; tg->is_showchaintarget = enable;
} }
if(chit->target.find(pcard) != chit->target.end()) if (ch.target.find(pcard) != ch.target.end())
chit->chain_card->is_showchaintarget = enable; ch.chain_card->is_showchaintarget = enable;
} }
} }
void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* element, irr::gui::IGUIElement* parent) { void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* element, irr::gui::IGUIElement* parent) {
...@@ -2768,26 +2768,28 @@ void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* e ...@@ -2768,26 +2768,28 @@ void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* e
if(pcard->code) { if(pcard->code) {
str.append(dataManager.GetName(pcard->code)); str.append(dataManager.GetName(pcard->code));
} }
if(pcard->overlayTarget) { if (pcard->location != LOCATION_DECK) {
myswprintf(formatBuffer, dataManager.GetSysString(225), dataManager.GetName(pcard->overlayTarget->code), pcard->overlayTarget->sequence + 1); if (pcard->overlayTarget) {
str.append(L"\n").append(formatBuffer); myswprintf(formatBuffer, dataManager.GetSysString(225), dataManager.GetName(pcard->overlayTarget->code), pcard->overlayTarget->sequence + 1);
}
if((pcard->status & STATUS_PROC_COMPLETE)
&& (pcard->type & (TYPE_RITUAL | TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK | TYPE_SPSUMMON)))
str.append(L"\n").append(dataManager.GetSysString(224));
for(auto iter = pcard->desc_hints.begin(); iter != pcard->desc_hints.end(); ++iter) {
myswprintf(formatBuffer, L"\n*%ls", dataManager.GetDesc(iter->first));
str.append(formatBuffer);
}
for(size_t i = 0; i < chains.size(); ++i) {
auto chit = chains[i];
if(pcard == chit.chain_card) {
myswprintf(formatBuffer, dataManager.GetSysString(216), i + 1);
str.append(L"\n").append(formatBuffer); str.append(L"\n").append(formatBuffer);
} }
if(chit.target.find(pcard) != chit.target.end()) { if ((pcard->status & STATUS_PROC_COMPLETE)
myswprintf(formatBuffer, dataManager.GetSysString(217), i + 1, dataManager.GetName(chit.chain_card->code)); && (pcard->type & (TYPE_RITUAL | TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK | TYPE_SPSUMMON)))
str.append(L"\n").append(formatBuffer); str.append(L"\n").append(dataManager.GetSysString(224));
for (auto iter = pcard->desc_hints.begin(); iter != pcard->desc_hints.end(); ++iter) {
myswprintf(formatBuffer, L"\n*%ls", dataManager.GetDesc(iter->first));
str.append(formatBuffer);
}
for (size_t i = 0; i < chains.size(); ++i) {
const auto& chit = chains[i];
if (pcard == chit.chain_card) {
myswprintf(formatBuffer, dataManager.GetSysString(216), i + 1);
str.append(L"\n").append(formatBuffer);
}
if (chit.target.find(pcard) != chit.target.end()) {
myswprintf(formatBuffer, dataManager.GetSysString(217), i + 1, dataManager.GetName(chit.chain_card->code));
str.append(L"\n").append(formatBuffer);
}
} }
} }
if(str.length() > 0) { if(str.length() > 0) {
......
...@@ -1044,22 +1044,43 @@ uint32_t card::get_ritual_level(card* pcard) { ...@@ -1044,22 +1044,43 @@ uint32_t card::get_ritual_level(card* pcard) {
uint32_t card::check_xyz_level(card* pcard, uint32_t lv) { uint32_t card::check_xyz_level(card* pcard, uint32_t lv) {
if(status & STATUS_NO_LEVEL) if(status & STATUS_NO_LEVEL)
return 0; return 0;
int32_t min_count = 0;
effect_set mset;
filter_effect(EFFECT_XYZ_MIN_COUNT, &mset);
for (int32_t i = 0; i < mset.size(); ++i) {
pduel->lua->add_param(this, PARAM_TYPE_CARD);
pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
int32_t count = mset[i]->get_value(2);
if (count > min_count)
min_count = count;
}
if (min_count > 0xf)
min_count = 0xf;
effect_set eset; effect_set eset;
filter_effect(EFFECT_XYZ_LEVEL, &eset); filter_effect(EFFECT_XYZ_LEVEL, &eset);
if(!eset.size()) { if(!eset.size()) {
uint32_t lev = get_level(); uint32_t card_lv = get_level();
if(lev == lv) if (card_lv == lv)
return lev; return (card_lv & MAX_XYZ_LEVEL) | ((uint32_t)min_count << 12);
return 0; return 0;
} }
for(int32_t i = 0; i < eset.size(); ++i) { for(int32_t i = 0; i < eset.size(); ++i) {
pduel->lua->add_param(this, PARAM_TYPE_CARD); pduel->lua->add_param(this, PARAM_TYPE_CARD);
pduel->lua->add_param(pcard, PARAM_TYPE_CARD); pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
uint32_t lev = eset[i]->get_value(2); uint32_t lev = eset[i]->get_value(2);
if(((lev & 0xfff) == lv)) uint16_t lv1 = lev & MAX_XYZ_LEVEL;
return lev & 0xffff; uint16_t count1 = (lev & 0xf000) >> 12;
if(((lev >> 16) & 0xfff) == lv) if (count1 < min_count)
return (lev >> 16) & 0xffff; count1 = min_count;
if (lv1 == lv)
return lv1 | ((uint32_t)count1 << 12);
lev >>= 16;
uint16_t lv2 = lev & MAX_XYZ_LEVEL;
uint16_t count2 = (lev & 0xf000) >> 12;
if (count2 < min_count)
count2 = min_count;
if (lv2 == lv)
return lv2 | ((uint32_t)count2 << 12);
} }
return 0; return 0;
} }
......
...@@ -54,10 +54,10 @@ struct card_state { ...@@ -54,10 +54,10 @@ struct card_state {
uint8_t sequence{ 0 }; uint8_t sequence{ 0 };
uint8_t position{ 0 }; uint8_t position{ 0 };
uint32_t reason{ 0 }; uint32_t reason{ 0 };
bool pzone{ false };
card* reason_card{ nullptr }; card* reason_card{ nullptr };
uint8_t reason_player{ PLAYER_NONE };
effect* reason_effect{ nullptr }; effect* reason_effect{ nullptr };
uint8_t reason_player{ PLAYER_NONE };
bool pzone{ false };
bool is_location(uint32_t loc) const; bool is_location(uint32_t loc) const;
bool is_main_mzone() const { bool is_main_mzone() const {
...@@ -168,7 +168,7 @@ public: ...@@ -168,7 +168,7 @@ public:
uint8_t attacked_count{}; uint8_t attacked_count{};
uint8_t attack_all_target{}; uint8_t attack_all_target{};
uint8_t attack_controler{}; uint8_t attack_controler{};
uint16_t cardid{}; uint64_t cardid{};
uint32_t fieldid{}; uint32_t fieldid{};
uint32_t fieldid_r{}; uint32_t fieldid_r{};
uint16_t turnid{}; uint16_t turnid{};
......
...@@ -529,6 +529,7 @@ const std::map<uint64_t, uint64_t> category_checklist{ ...@@ -529,6 +529,7 @@ const std::map<uint64_t, uint64_t> category_checklist{
#define EFFECT_TUNER 369 #define EFFECT_TUNER 369
#define EFFECT_KAISER_COLOSSEUM 370 #define EFFECT_KAISER_COLOSSEUM 370
#define EFFECT_REPLACE_DAMAGE 371 #define EFFECT_REPLACE_DAMAGE 371
#define EFFECT_XYZ_MIN_COUNT 372
//#define EVENT_STARTUP 1000 //#define EVENT_STARTUP 1000
#define EVENT_FLIP 1001 #define EVENT_FLIP 1001
...@@ -606,8 +607,11 @@ const std::map<uint64_t, uint64_t> category_checklist{ ...@@ -606,8 +607,11 @@ const std::map<uint64_t, uint64_t> category_checklist{
#define EVENT_REMOVE_COUNTER 0x20000 #define EVENT_REMOVE_COUNTER 0x20000
#define EVENT_CUSTOM 0x10000000 #define EVENT_CUSTOM 0x10000000
constexpr int32_t DOUBLE_DAMAGE = 0x80000000; constexpr int32_t DOUBLE_DAMAGE = INT32_MIN;
constexpr int32_t HALF_DAMAGE = 0x80000001; constexpr int32_t HALF_DAMAGE = INT32_MIN + 1;
constexpr uint32_t MAX_PARAMETER = 0xffffU;
constexpr uint32_t MAX_XYZ_LEVEL = 0x0fffU;
// flag effect // flag effect
#define EFFECT_FLAG_EFFECT 0x20000000U #define EFFECT_FLAG_EFFECT 0x20000000U
......
...@@ -123,11 +123,11 @@ struct field_effect { ...@@ -123,11 +123,11 @@ struct field_effect {
grant_effect_container grant_effect; grant_effect_container grant_effect;
}; };
struct field_info { struct field_info {
uint64_t card_id{ 1 };
int32_t field_id{ 1 }; int32_t field_id{ 1 };
uint16_t copy_id{ 1 }; uint16_t copy_id{ 1 };
uint16_t turn_id{}; uint16_t turn_id{};
uint16_t turn_id_by_player[2]{}; uint16_t turn_id_by_player[2]{};
uint16_t card_id{ 1 };
uint16_t phase{}; uint16_t phase{};
uint8_t turn_player{}; uint8_t turn_player{};
uint8_t priorities[2]{}; uint8_t priorities[2]{};
......
...@@ -18,17 +18,17 @@ class duel; ...@@ -18,17 +18,17 @@ class duel;
using card_set = std::set<card*, card_sort>; using card_set = std::set<card*, card_sort>;
constexpr int GTYPE_DEFAULT = 0; constexpr uint32_t GTYPE_DEFAULT = 0;
constexpr int GTYPE_READ_ONLY = 1; constexpr uint32_t GTYPE_READ_ONLY = 1;
constexpr int GTYPE_KEEP_ALIVE = 2; constexpr uint32_t GTYPE_KEEP_ALIVE = 2;
class group { class alignas(8) group {
public: public:
int32_t ref_handle{ 0 };
uint32_t is_readonly{ GTYPE_DEFAULT };
duel* pduel; duel* pduel;
card_set container; card_set container;
card_set::iterator it; card_set::iterator it;
int32_t ref_handle{ 0 };
uint32_t is_readonly{ GTYPE_DEFAULT };
bool is_iterator_dirty{ true }; bool is_iterator_dirty{ true };
bool has_card(card* c) { bool has_card(card* c) {
......
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
更新: 更新:
1.更新ygopro内核; 1.更新ygopro内核;
2.新卡1208+T1207+VJ; 2.新卡1208+T1207+VJ;
3.因网页证书要求不再支持安卓7.0以下系统; 3.新增人机卡组:雷火沸动;
4.因网页证书要求不再支持安卓7.0以下系统;
变更: 变更:
1.将决斗中的过宽的卡片显示为原始比例; 1.将决斗中的过宽的卡片显示为原始比例;
2.优化选卡窗口的布局以适应原始比例卡片; 2.优化选卡窗口的布局以适应原始比例卡片;
......
...@@ -129,6 +129,11 @@ Name=复制梁龙 Deck=Salamangreat Dialog=anothercopy.zh-CN ...@@ -129,6 +129,11 @@ Name=复制梁龙 Deck=Salamangreat Dialog=anothercopy.zh-CN
转生炎兽卡组。 转生炎兽卡组。
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!复制梁龙-雷火沸动
Name=复制梁龙 Deck=Ryzeal Dialog=anothercopy.zh-CN
初代雷火沸动卡组。
AI_LV4 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!VI-1911-凭依装着 !VI-1911-凭依装着
Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.zh-CN Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.zh-CN
凭依装着卡组。 凭依装着卡组。
......
#created by ...
#main
8633261
8633261
8633261
35844557
35844557
35844557
72238166
34022970
34022970
34022970
42141493
42141493
84192580
87126721
14558127
14558127
14558127
59438930
59438930
23434538
23434538
94145021
97268402
97268402
97268402
7477101
7477101
7477101
25311006
35261759
35261759
85106525
24224830
24224830
60394026
65681983
6798031
10045474
10045474
10045474
#extra
9940036
34909328
34909328
2061963
7511613
7511613
45852939
45852939
6983839
90590303
46772449
16643334
21044178
66011101
8728498
!side
20292186
34267821
34267821
34267821
67173574
18144507
19613556
35269904
15693423
83326048
83326048
83326048
41420027
41420027
41420027
...@@ -129,6 +129,11 @@ Name=CopyDiplodocus Deck=Salamangreat Dialog=anothercopy.en-EN ...@@ -129,6 +129,11 @@ Name=CopyDiplodocus Deck=Salamangreat Dialog=anothercopy.en-EN
Salamangreat Deck Salamangreat Deck
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!CopyDiplodocus-Ryzeal
Name=CopyDiplodocus Deck=Ryzeal Dialog=anothercopy.en-EN
Ryzeal Deck
AI_LV4 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!VI-1911-Familiar-Possesed !VI-1911-Familiar-Possesed
Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.en-EN Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.en-EN
Familiar-Possesed Beat Familiar-Possesed Beat
......
...@@ -129,6 +129,11 @@ Name=Diplodocus Deck=Salamangreat Dialog=anothercopy.es-ES ...@@ -129,6 +129,11 @@ Name=Diplodocus Deck=Salamangreat Dialog=anothercopy.es-ES
Baraja meta de fuego, "Salamangrande" sabe como encender el duelo en llamas cuando menos te lo esperas. Baraja meta de fuego, "Salamangrande" sabe como encender el duelo en llamas cuando menos te lo esperas.
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!CopyDiplodocus-Ryzeal
Name=Diplodocus Deck=Ryzeal Dialog=anothercopy.es-ES
Ryzeal Deck
AI_LV4 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!VI-1911 - Familiar Poseído !VI-1911 - Familiar Poseído
Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.es-ES Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.es-ES
Que su nombre no te engañe, esta baraja está reforzada con un engine de cartas antimeta muy molesto. Que su nombre no te engañe, esta baraja está reforzada con un engine de cartas antimeta muy molesto.
......
...@@ -122,13 +122,18 @@ AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 ...@@ -122,13 +122,18 @@ AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!リプロドクス-オルフェゴール !リプロドクス-オルフェゴール
Name=复制梁龙 Deck=Orcust Dialog=anothercopy.zh-CN Name=复制梁龙 Deck=Orcust Dialog=anothercopy.zh-CN
オルフェゴールデッキ。 オルフェゴールデッキ。
AI_LV4 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!リプロドクス-サラマングレイト !リプロドクス-サラマングレイト
Name=复制梁龙 Deck=Salamangreat Dialog=anothercopy.zh-CN Name=リプロドクス Deck=Salamangreat Dialog=anothercopy.zh-CN
サラマングレイトデッキ。 サラマングレイトデッキ。
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!リプロドクス-ライゼオル
Name=CopyDiplodocus Deck=Ryzeal Dialog=anothercopy.zh-CN
ライゼオル
AI_LV4 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!VI-1911-憑依装着 !VI-1911-憑依装着
Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.zh-CN Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.zh-CN
憑依装着を中心としたメタデッキ。 憑依装着を中心としたメタデッキ。
......
...@@ -129,6 +129,11 @@ Name=카카시 Deck=Salamangreat Dialog=anothercopy.kor ...@@ -129,6 +129,11 @@ Name=카카시 Deck=Salamangreat Dialog=anothercopy.kor
샐러맨그레이트 덱입니다. (신 마스터 룰|마스터 룰 개정판 사용 가능) 샐러맨그레이트 덱입니다. (신 마스터 룰|마스터 룰 개정판 사용 가능)
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020 AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!카카시-라이제올
Name=카카시 Deck=Ryzeal Dialog=anothercopy.kor
라이제올 덱입니다.
AI_LV4 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!VI-1911-빙의장착 !VI-1911-빙의장착
Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.kor Name=VI-1911 Deck=FamiliarPossessed Dialog=VI-1911.kor
빙의장착 덱입니다. (마스터 룰3|신 마스터 룰|마스터 룰 개정판 사용 가능) 빙의장착 덱입니다. (마스터 룰3|신 마스터 룰|마스터 룰 개정판 사용 가능)
......
...@@ -573,6 +573,7 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene ...@@ -573,6 +573,7 @@ public class HomeFragment extends BaseFragemnt implements OnDuelAssistantListene
@Override @Override
public void onSaveDeck(Uri uri, List<Integer> mainList, List<Integer> exList, List<Integer> sideList, boolean isCompleteDeck, String exception, int id) { public void onSaveDeck(Uri uri, List<Integer> mainList, List<Integer> exList, List<Integer> sideList, boolean isCompleteDeck, String exception, int id) {
activity.startPermissionsActivity();
saveDeck(uri, mainList, exList, sideList, isCompleteDeck, exception, id != DefWebViewClient.CHECK_ID_WEB_VIEW_NEW_ACTIVITY); saveDeck(uri, mainList, exList, sideList, isCompleteDeck, exception, id != DefWebViewClient.CHECK_ID_WEB_VIEW_NEW_ACTIVITY);
} }
......
...@@ -318,6 +318,7 @@ ...@@ -318,6 +318,7 @@
\nRestaurar: restaurar los decks respaldados</string> \nRestaurar: restaurar los decks respaldados</string>
<string name="restore_deck">Se encontraron decks respaldados en su dispositivo, ¿desea restaurarlos?</string> <string name="restore_deck">Se encontraron decks respaldados en su dispositivo, ¿desea restaurarlos?</string>
<string name="explain_permission">El uso de estas funciones requiere los siguientes permisos: <string name="explain_permission">El uso de estas funciones requiere los siguientes permisos:
\nPermiso del portapapeles: Necesario para leer códigos de mazo y códigos de partido
\nPermiso de Almacenamiento: necesario para respaldar y restaurar decks; para personalizar fuentes, fondos, avatares y cubiertas de cartas \nPermiso de Almacenamiento: necesario para respaldar y restaurar decks; para personalizar fuentes, fondos, avatares y cubiertas de cartas
</string> </string>
<string name="guide_menu">Menú:\nFunciones principales como: </string> <string name="guide_menu">Menú:\nFunciones principales como: </string>
......
...@@ -324,6 +324,7 @@ ...@@ -324,6 +324,7 @@
<string name="restore_deck">復元記録を発見しました,復元をしますか?</string> <string name="restore_deck">復元記録を発見しました,復元をしますか?</string>
<string name="explain_permission"> <string name="explain_permission">
このソート使用する為に以下の権限を許してください: このソート使用する為に以下の権限を許してください:
\nクリップボードの権限:デッキコードや対戦コードの読み取りに必要
\nセーブ権限:バックアップ、復元デッキ,壁紙カスタマイズ、アバタ、プロテクター必須</string> \nセーブ権限:バックアップ、復元デッキ,壁紙カスタマイズ、アバタ、プロテクター必須</string>
<string name="guide_menu">機能メニュー:\n主の機能は"</string> <string name="guide_menu">機能メニュー:\n主の機能は"</string>
<string name="guide_mycard">MYCARDプラットホーム:\n対戦サーバーを提供します\nランキング,観戦,チャット</string> <string name="guide_mycard">MYCARDプラットホーム:\n対戦サーバーを提供します\nランキング,観戦,チャット</string>
......
...@@ -322,6 +322,7 @@ ...@@ -322,6 +322,7 @@
<string name="restore_deck">기기에서 백업된 덱을 발견했습니다. 복원하시겠습니까?</string> <string name="restore_deck">기기에서 백업된 덱을 발견했습니다. 복원하시겠습니까?</string>
<string name="explain_permission"> <string name="explain_permission">
이 앱의 기능을 사용하려면 다음과 같은 필수 권한이 적용됩니다: 이 앱의 기능을 사용하려면 다음과 같은 필수 권한이 적용됩니다:
\n 클립보드 권한: 덱 코드 및 대전 코드 읽기 필수
\n 저장소 권한:백업, 덱 복원, 사용자 지정 배경, 아바타, 카드 커버 필요</string> \n 저장소 권한:백업, 덱 복원, 사용자 지정 배경, 아바타, 카드 커버 필요</string>
<string name="guide_menu">기능 메뉴:\n앱의 주요 기능은 다음 과 같습니다</string> <string name="guide_menu">기능 메뉴:\n앱의 주요 기능은 다음 과 같습니다</string>
<string name="guide_mycard">MyCard:\n랭킹, 듀얼 관전, 채팅 및 포럼 등 \n 다양한 듀얼 서비스를 제공합니다</string> <string name="guide_mycard">MyCard:\n랭킹, 듀얼 관전, 채팅 및 포럼 등 \n 다양한 듀얼 서비스를 제공합니다</string>
......
...@@ -324,6 +324,7 @@ ...@@ -324,6 +324,7 @@
<string name="restore_deck">发现本机有卡组备份记录,是否还原?</string> <string name="restore_deck">发现本机有卡组备份记录,是否还原?</string>
<string name="explain_permission"> <string name="explain_permission">
使用本软件此类功能将申请以下必要权限: 使用本软件此类功能将申请以下必要权限:
\n剪贴板权限:读取卡组码、约战码必需
\n存储权限:备份、还原卡组,自定义背景、头像、卡背必需</string> \n存储权限:备份、还原卡组,自定义背景、头像、卡背必需</string>
<string name="guide_menu">功能菜单:\n主要功能如"</string> <string name="guide_menu">功能菜单:\n主要功能如"</string>
<string name="guide_mycard">萌卡平台:\n提供众多对战服务\n包含排位,观战,聊天与论坛等</string> <string name="guide_mycard">萌卡平台:\n提供众多对战服务\n包含排位,观战,聊天与论坛等</string>
......
...@@ -323,6 +323,7 @@ ...@@ -323,6 +323,7 @@
<string name="restore_deck">found backed up decks in your Device\, restore\?</string> <string name="restore_deck">found backed up decks in your Device\, restore\?</string>
<string name="explain_permission"> <string name="explain_permission">
Very necessary permissions will be applied\: Very necessary permissions will be applied\:
\nClipboard permission: Required for reading deck codes and match codes
\nStorage Access\:backup\/restore deck\,set custom background\/avatars\/cardback</string> \nStorage Access\:backup\/restore deck\,set custom background\/avatars\/cardback</string>
<string name="guide_menu">Menu\:\nincluding most of functions, for Example</string> <string name="guide_menu">Menu\:\nincluding most of functions, for Example</string>
<string name="guide_mycard">Mycard\: rank duel record, observe games, chating room, etc. </string> <string name="guide_mycard">Mycard\: rank duel record, observe games, chating room, etc. </string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment