Commit 14b1ecfb authored by feihuaduo's avatar feihuaduo
parents d718dbf3 2ec05e94
......@@ -2072,6 +2072,32 @@ void field::check_card_counter(card* pcard, int32 counter_type, int32 playerid)
}
}
}
void field::check_card_counter(group* pgroup, int32 counter_type, int32 playerid) {
auto& counter_map = (counter_type == 1) ? core.summon_counter :
(counter_type == 2) ? core.normalsummon_counter :
(counter_type == 3) ? core.spsummon_counter :
(counter_type == 4) ? core.flipsummon_counter : core.attack_counter;
for(auto& iter : counter_map) {
auto& info = iter.second;
if((playerid == 0) && (info.second & 0xffff) != 0)
continue;
if((playerid == 1) && (info.second & 0xffff0000) != 0)
continue;
if(info.first) {
for(auto& pcard : pgroup->container) {
pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
if(!pduel->lua->check_condition(info.first, 1)) {
if(playerid == 0)
info.second += 0x1;
else
info.second += 0x10000;
break;
}
}
}
}
}
void field::check_chain_counter(effect* peffect, int32 playerid, int32 chainid, bool cancel) {
for(auto& iter : core.chain_counter) {
auto& info = iter.second;
......
......@@ -416,6 +416,7 @@ public:
effect* check_unique_onfield(card* pcard, uint8 controler, uint8 location, card* icard = 0);
int32 check_spsummon_once(card* pcard, uint8 playerid);
void check_card_counter(card* pcard, int32 counter_type, int32 playerid);
void check_card_counter(group* pgroup, int32 counter_type, int32 playerid);
void check_chain_counter(effect* peffect, int32 playerid, int32 chainid, bool cancel = false);
void set_spsummon_counter(uint8 playerid, bool add = true, bool chain = false);
int32 check_spsummon_counter(uint8 playerid, uint8 ct = 1);
......
......@@ -1800,8 +1800,6 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
pduel->write_buffer32(target->get_info_location());
core.summon_state_count[sumplayer]++;
core.normalsummon_state_count[sumplayer]++;
check_card_counter(target, 1, sumplayer);
check_card_counter(target, 2, sumplayer);
if (target->material_cards.size()) {
for (auto& mcard : target->material_cards)
raise_single_event(mcard, 0, EVENT_BE_PRE_MATERIAL, proc, REASON_SUMMON, sumplayer, sumplayer, 0);
......@@ -1876,6 +1874,8 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
return FALSE;
}
case 17: {
check_card_counter(target, 1, sumplayer);
check_card_counter(target, 2, sumplayer);
raise_single_event(target, 0, EVENT_SUMMON_SUCCESS, proc, 0, sumplayer, sumplayer, 0);
process_single_event();
raise_event(target, EVENT_SUMMON_SUCCESS, proc, 0, sumplayer, sumplayer, 0);
......@@ -1915,7 +1915,6 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target) {
target->fieldid = infos.field_id++;
core.phase_action = TRUE;
core.flipsummon_state_count[sumplayer]++;
check_card_counter(target, 4, sumplayer);
pduel->write_buffer8(MSG_FLIPSUMMONING);
pduel->write_buffer32(target->data.code);
pduel->write_buffer32(target->get_info_location());
......@@ -1948,6 +1947,7 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target) {
}
case 4: {
pduel->write_buffer8(MSG_FLIPSUMMONED);
check_card_counter(target, 4, sumplayer);
adjust_instant();
raise_single_event(target, 0, EVENT_FLIP, 0, 0, sumplayer, sumplayer, 0);
raise_single_event(target, 0, EVENT_FLIP_SUMMON_SUCCESS, 0, 0, sumplayer, sumplayer, 0);
......@@ -2587,7 +2587,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
target->current.reason_player = sumplayer;
target->summon_player = sumplayer;
set_spsummon_counter(sumplayer);
check_card_counter(target, 3, sumplayer);
if(target->spsummon_code)
core.spsummon_once_map[sumplayer][target->spsummon_code]++;
break_effect();
......@@ -2694,6 +2693,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
return FALSE;
}
case 17: {
check_card_counter(target, 3, sumplayer);
raise_single_event(target, 0, EVENT_SPSUMMON_SUCCESS, core.units.begin()->peffect, 0, sumplayer, sumplayer, 0);
process_single_event();
raise_event(target, EVENT_SPSUMMON_SUCCESS, core.units.begin()->peffect, 0, sumplayer, sumplayer, 0);
......@@ -2757,7 +2757,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
pcard->current.reason_player = sumplayer;
pcard->summon_player = sumplayer;
pcard->summon_info = (peffect->get_value(pcard) & 0xff00ffff) | SUMMON_TYPE_SPECIAL | ((uint32)pcard->current.location << 16);
check_card_counter(pcard, 3, sumplayer);
uint32 zone = 0xff;
uint32 flag1, flag2;
int32 ct1 = get_tofield_count(pcard, sumplayer, LOCATION_MZONE, sumplayer, LOCATION_REASON_TOFIELD, zone, &flag1);
......@@ -2854,6 +2853,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
case 28: {
group* pgroup = core.units.begin()->ptarget;
pduel->write_buffer8(MSG_SPSUMMONED);
check_card_counter(pgroup, 3, sumplayer);
for(auto& pcard : pgroup->container)
raise_single_event(pcard, 0, EVENT_SPSUMMON_SUCCESS, pcard->current.reason_effect, 0, pcard->current.reason_player, pcard->summon_player, 0);
process_single_event();
......@@ -2924,7 +2924,6 @@ int32 field::special_summon_step(uint16 step, group* targets, card* target, uint
if(!targets)
core.special_summoning.insert(target);
target->enable_field_effect(false);
check_card_counter(target, 3, target->summon_player);
if(targets && core.duel_rule >= 4) {
uint32 flag1, flag2;
int32 ct1 = get_tofield_count(target, playerid, LOCATION_MZONE, target->summon_player, LOCATION_REASON_TOFIELD, zone, &flag1);
......@@ -3039,6 +3038,7 @@ int32 field::special_summon(uint16 step, effect* reason_effect, uint8 reason_pla
case 3: {
pduel->write_buffer8(MSG_SPSUMMONED);
for(auto& pcard : targets->container) {
check_card_counter(pcard, 3, pcard->summon_player);
if(!(pcard->current.position & POS_FACEDOWN))
raise_single_event(pcard, 0, EVENT_SPSUMMON_SUCCESS, pcard->current.reason_effect, 0, pcard->current.reason_player, pcard->summon_player, 0);
int32 summontype = pcard->summon_info & 0xff000000;
......
#[2018.10][2018.12 TCG][2018.7][2018.4][2018.1][2017.10][2017.7][2017.4][2017.1][2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][2018.9 TCG][2018.5 TCG][2018.2 TCG][2017.11 TCG][2017.9 TCG][2017.6 TCG][2017.3 TCG][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
#[2019.1][2018.10][2018.12 TCG][2018.7][2018.4][2018.1][2017.10][2017.7][2017.4][2017.1][2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][2018.9 TCG][2018.5 TCG][2018.2 TCG][2017.11 TCG][2017.9 TCG][2017.6 TCG][2017.3 TCG][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
!2019.1
#forbidden
91869203 0 --アマゾネスの射手
79875176 0 --トゥーン・キャノン・ソルジャー
11384280 0 --キャノン・ソルジャー
32723153 0 --マジカル·エクスプロージョン
20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン
25862681 0 --エンシェント・フェアリー・ドラゴン
53804307 0 --焔征竜-ブラスター
07563579 0 --Emヒグルミ
17330916 0 --EMモンキーボード
90411554 0 --巌征竜-レドックス
17412721 0 --旧神ノーデン
67441435 0 --グローアップ・バルブ
34124316 0 --サイバーポッド
88071625 0 --The tyrant NEPTUNE
61665245 0 --サモン・ソーサレス
48905153 0 --十二獣ドランシア
85115440 0 --十二獣ブルホーン
21593977 0 --処刑人-マキュラ
21377582 0 --真竜剣皇マスターP
16923472 0 --ゼンマイハンター
15341821 0 --ダンディライオン
18326736 0 --星守の騎士 プトレマイオス
39064822 0 --トロイメア・ゴブリン
58820923 0 --No.95 ギャラクシーアイズ・ダークマター・ドラゴン
54719828 0 --No.16 色の支配者ショック・ルーラー
26400609 0 --瀑征竜-タイダル
05043010 0 --ファイアウォール・ドラゴン
78706415 0 --ファイバーポッド
93369354 0 --フィッシュボーグ-ガンナー
23558733 0 --フェニキシアン・クラスター・アマリリス
09929398 0 --BF−朧影のゴウフウ
09047460 0 --BF−隠れ蓑のスチーム
31178212 0 --マジェスペクター・ユニコーン
34206604 0 --魔導サイエンティスト
04423206 0 --M.X-セイバー インヴォーカー
14702066 0 --メガキャノン・ソルジャー
96782886 0 --メンタルマスター
03078576 0 --八汰烏
34086406 0 --ラヴァルバル・チェイン
57421866 0 --レベル・スティーラー
41482598 0 --悪夢の蜃気楼
44763025 0 --いたずら好きな双子悪魔
19613556 0 --大嵐
17375316 0 --押収
74191942 0 --苦渋の選択
42829885 0 --強引な番兵
45986603 0 --強奪
55144522 0 --強欲な壺
04031928 0 --心変わり
46060017 0 --十二獣の会局
31423101 0 --神剣-フェニックスブレード
12580477 0 --サンダー·ボルト
23557835 0 --次元融合
57953380 0 --生還の宝札
60682203 0 --大寒波
69243953 0 --蝶の短剣-エルマ
79571449 0 --天使の施し
13035077 0 --ドラゴニックD
70828912 0 --早すぎた埋葬
42703248 0 --ハリケーン
34906152 0 --マスドライバー
46448938 0 --魔導書の神判
46411259 0 --突然変異
85602018 0 --遺言状
27174286 0 --異次元からの帰還
93016201 0 --王宮の弾圧
03280747 0 --第六感
64697231 0 --ダスト·シュート
80604091 0 --血の代償
35316708 0 --刻の封印
17178486 0 --ライフチェンジャー
28566710 0 --ラストバトル!
#limit
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
76794549 1 --アストログラフ・マジシャン
73941492 1 --調弦の魔術師
52340444 1 --閃刀機-ホーネットビット
73468603 1 --盆回し
64034255 1 --A·ジェネクス·バードマン
01561110 1 --ABC-ドラゴン・バスター
50720316 1 --E·HERO シャドー·ミスト
40318957 1 --EMドクロバット・ジョーカー
42790071 1 --オルターガイスト・マルチフェイカー
50588353 1 --水晶機巧-ハリファイバー
12289247 1 --クロノグラフ・マジシャン
49684352 1 --虹彩の魔術師
74586817 1 --PSYフレームロード・Ω
78872731 1 --十二獣モルモラット
06602300 1 --重爆撃禽 ボム・フェネクス
75286621 1 --召喚獣メルカバー
78868119 1 --深海のディーヴァ
58984738 1 --真竜拳士ダイナマイトK
78080961 1 --SPYRAL−ジーニアス
63288573 1 --閃刀姫-カガリ
65192027 1 --ダーク·アームド·ドラゴン
44335251 1 --魂喰いオヴィラプター
90953320 1 --TG ハイパー·ライブラリアン
69015963 1 --デビル・フランケン
75732622 1 --トーチ・ゴーレム
16226786 1 --深淵の暗殺者
28297833 1 --ネクロフェイス
69610326 1 --覇王眷竜ダークヴルム
70583986 1 --氷結界の虎王ドゥローレン
52687916 1 --氷結界の龍 トリシューラ
33396948 1 --封印されしエクゾディア
07902349 1 --封印されし者の左腕
70903634 1 --封印されし者の右腕
44519536 1 --封印されし者の左足
08124921 1 --封印されし者の右足
35272499 1 --捕食植物オフリス・スコーピオ
36042004 1 --ベビケラサウルス
10802915 1 --魔界発現世行きデスガイド
41386308 1 --マスマティシャン
33508719 1 --メタモルポット
90809975 1 --餅カエル
89463537 1 --ユニコールの影霊衣
89399912 1 --嵐征竜-テンペスト
92746535 1 --竜剣士ラスターP
88264978 1 --レッドアイズ·ダークネスメタルドラゴン
48686504 1 --ローンファイア・ブロッサム
33782437 1 --一時休戦
66957584 1 --インフェルニティガン
81439173 1 --おろかな埋葬
23701465 1 --原初の種
99330325 1 --妨げられた壊獣の眠り
45305419 1 --継承の印
83764718 1 --死者蘇生
54631665 1 --SPYRAL RESORT
32807846 1 --増援
54447022 1 --ソウル・チャージ
72892473 1 --手札抹殺
73628505 1 --テラ・フォーミング
97211663 1 --影霊衣の反魂術
18144506 1 --ハーピィの羽根帚
08949584 1 --ヒーローアライブ
75500286 1 --封印の黄金櫃
53208660 1 --ペンデュラム・コール
93600443 1 --マスク・チェンジ・セカンド
15854426 1 --霞の谷の神風
58577036 1 --名推理
23171610 1 --リミッター解除
14733538 1 --竜呼相打つ
02295440 1 --ワン·フォー·ワン
05851097 1 --虚無空間
61740673 1 --王宮の勅命
21076084 1 --トリックスター・リンカーネイション
#semi limit
40044918 2 --E·HERO エアーマン
68819554 2 --Emダメージ・ジャグラー
65536818 2 --源竜星-ボウテンコウ
81275020 2 --SRベイゴマックス
61283655 2 --トリックスター・キャンディナ
14558127 2 --灰流うらら
55623480 2 --妖精伝姫−シラユキ
47325505 2 --化石調査
67723438 2 --緊急テレポート
73915051 2 --スケープ・ゴート
98338152 2 --閃刀機−ウィドウアンカー
63166095 2 --閃刀起動−エンゲージ
91623717 2 --連鎖爆撃
11110587 2 --隣の芝刈り
48130397 2 --超融合
66399653 2 --ユニオン格納庫
23314220 2 --ルドラの魔導書
84749824 2 --神の警告
41420027 2 --神の宣告
40605147 2 --神の通告
36468556 2 --停戦協定
53936268 2 --パーソナル・スプーフィング
!2018.10
#forbidden
......
This diff is collapsed.
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