Commit 086a268d authored by mercury233's avatar mercury233 Committed by GitHub

update activity_type constants (#401)

parent 054a8b78
...@@ -391,4 +391,13 @@ struct card_sort { ...@@ -391,4 +391,13 @@ struct card_sort {
#define DUEL_TAG_MODE 0x20 #define DUEL_TAG_MODE 0x20
#define DUEL_SIMPLE_AI 0x40 #define DUEL_SIMPLE_AI 0x40
//Activity
#define ACTIVITY_SUMMON 1
#define ACTIVITY_NORMALSUMMON 2
#define ACTIVITY_SPSUMMON 3
#define ACTIVITY_FLIPSUMMON 4
#define ACTIVITY_ATTACK 5
#define ACTIVITY_BATTLE_PHASE 6
#define ACTIVITY_CHAIN 7
#endif /* COMMON_H_ */ #endif /* COMMON_H_ */
...@@ -2166,10 +2166,10 @@ int32 field::check_spsummon_once(card* pcard, uint8 playerid) { ...@@ -2166,10 +2166,10 @@ int32 field::check_spsummon_once(card* pcard, uint8 playerid) {
} }
// increase the binary custom counter 1~5 // increase the binary custom counter 1~5
void field::check_card_counter(card* pcard, int32 counter_type, int32 playerid) { void field::check_card_counter(card* pcard, int32 counter_type, int32 playerid) {
auto& counter_map = (counter_type == 1) ? core.summon_counter : auto& counter_map = (counter_type == ACTIVITY_SUMMON) ? core.summon_counter :
(counter_type == 2) ? core.normalsummon_counter : (counter_type == ACTIVITY_NORMALSUMMON) ? core.normalsummon_counter :
(counter_type == 3) ? core.spsummon_counter : (counter_type == ACTIVITY_SPSUMMON) ? core.spsummon_counter :
(counter_type == 4) ? core.flipsummon_counter : core.attack_counter; (counter_type == ACTIVITY_FLIPSUMMON) ? core.flipsummon_counter : core.attack_counter;
for(auto& iter : counter_map) { for(auto& iter : counter_map) {
auto& info = iter.second; auto& info = iter.second;
if((playerid == 0) && (info.second & 0xffff) != 0) if((playerid == 0) && (info.second & 0xffff) != 0)
...@@ -2188,10 +2188,10 @@ void field::check_card_counter(card* pcard, int32 counter_type, int32 playerid) ...@@ -2188,10 +2188,10 @@ void field::check_card_counter(card* pcard, int32 counter_type, int32 playerid)
} }
} }
void field::check_card_counter(group* pgroup, 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 : auto& counter_map = (counter_type == ACTIVITY_SUMMON) ? core.summon_counter :
(counter_type == 2) ? core.normalsummon_counter : (counter_type == ACTIVITY_NORMALSUMMON) ? core.normalsummon_counter :
(counter_type == 3) ? core.spsummon_counter : (counter_type == ACTIVITY_SPSUMMON) ? core.spsummon_counter :
(counter_type == 4) ? core.flipsummon_counter : core.attack_counter; (counter_type == ACTIVITY_FLIPSUMMON) ? core.flipsummon_counter : core.attack_counter;
for(auto& iter : counter_map) { for(auto& iter : counter_map) {
auto& info = iter.second; auto& info = iter.second;
if((playerid == 0) && (info.second & 0xffff) != 0) if((playerid == 0) && (info.second & 0xffff) != 0)
......
...@@ -4360,43 +4360,44 @@ int32 scriptlib::duel_add_custom_activity_counter(lua_State *L) { ...@@ -4360,43 +4360,44 @@ int32 scriptlib::duel_add_custom_activity_counter(lua_State *L) {
int32 counter_filter = interpreter::get_function_handle(L, 3); int32 counter_filter = interpreter::get_function_handle(L, 3);
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
switch(activity_type) { switch(activity_type) {
case 1: { case ACTIVITY_SUMMON: {
auto iter = pduel->game_field->core.summon_counter.find(counter_id); auto iter = pduel->game_field->core.summon_counter.find(counter_id);
if(iter != pduel->game_field->core.summon_counter.end()) if(iter != pduel->game_field->core.summon_counter.end())
break; break;
pduel->game_field->core.summon_counter[counter_id] = std::make_pair(counter_filter, 0); pduel->game_field->core.summon_counter[counter_id] = std::make_pair(counter_filter, 0);
break; break;
} }
case 2: { case ACTIVITY_NORMALSUMMON: {
auto iter = pduel->game_field->core.normalsummon_counter.find(counter_id); auto iter = pduel->game_field->core.normalsummon_counter.find(counter_id);
if(iter != pduel->game_field->core.normalsummon_counter.end()) if(iter != pduel->game_field->core.normalsummon_counter.end())
break; break;
pduel->game_field->core.normalsummon_counter[counter_id] = std::make_pair(counter_filter, 0); pduel->game_field->core.normalsummon_counter[counter_id] = std::make_pair(counter_filter, 0);
break; break;
} }
case 3: { case ACTIVITY_SPSUMMON: {
auto iter = pduel->game_field->core.spsummon_counter.find(counter_id); auto iter = pduel->game_field->core.spsummon_counter.find(counter_id);
if(iter != pduel->game_field->core.spsummon_counter.end()) if(iter != pduel->game_field->core.spsummon_counter.end())
break; break;
pduel->game_field->core.spsummon_counter[counter_id] = std::make_pair(counter_filter, 0); pduel->game_field->core.spsummon_counter[counter_id] = std::make_pair(counter_filter, 0);
break; break;
} }
case 4: { case ACTIVITY_FLIPSUMMON: {
auto iter = pduel->game_field->core.flipsummon_counter.find(counter_id); auto iter = pduel->game_field->core.flipsummon_counter.find(counter_id);
if(iter != pduel->game_field->core.flipsummon_counter.end()) if(iter != pduel->game_field->core.flipsummon_counter.end())
break; break;
pduel->game_field->core.flipsummon_counter[counter_id] = std::make_pair(counter_filter, 0); pduel->game_field->core.flipsummon_counter[counter_id] = std::make_pair(counter_filter, 0);
break; break;
} }
case 5: { case ACTIVITY_ATTACK: {
auto iter = pduel->game_field->core.attack_counter.find(counter_id); auto iter = pduel->game_field->core.attack_counter.find(counter_id);
if(iter != pduel->game_field->core.attack_counter.end()) if(iter != pduel->game_field->core.attack_counter.end())
break; break;
pduel->game_field->core.attack_counter[counter_id] = std::make_pair(counter_filter, 0); pduel->game_field->core.attack_counter[counter_id] = std::make_pair(counter_filter, 0);
break; break;
} }
case 6: break; case ACTIVITY_BATTLE_PHASE:
case 7: { break;
case ACTIVITY_CHAIN: {
auto iter = pduel->game_field->core.chain_counter.find(counter_id); auto iter = pduel->game_field->core.chain_counter.find(counter_id);
if(iter != pduel->game_field->core.chain_counter.end()) if(iter != pduel->game_field->core.chain_counter.end())
break; break;
...@@ -4416,39 +4417,39 @@ int32 scriptlib::duel_get_custom_activity_count(lua_State *L) { ...@@ -4416,39 +4417,39 @@ int32 scriptlib::duel_get_custom_activity_count(lua_State *L) {
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
int32 val = 0; int32 val = 0;
switch(activity_type) { switch(activity_type) {
case 1: { case ACTIVITY_SUMMON: {
auto iter = pduel->game_field->core.summon_counter.find(counter_id); auto iter = pduel->game_field->core.summon_counter.find(counter_id);
if(iter != pduel->game_field->core.summon_counter.end()) if(iter != pduel->game_field->core.summon_counter.end())
val = iter->second.second; val = iter->second.second;
break; break;
} }
case 2: { case ACTIVITY_NORMALSUMMON: {
auto iter = pduel->game_field->core.normalsummon_counter.find(counter_id); auto iter = pduel->game_field->core.normalsummon_counter.find(counter_id);
if(iter != pduel->game_field->core.normalsummon_counter.end()) if(iter != pduel->game_field->core.normalsummon_counter.end())
val = iter->second.second; val = iter->second.second;
break; break;
} }
case 3: { case ACTIVITY_SPSUMMON: {
auto iter = pduel->game_field->core.spsummon_counter.find(counter_id); auto iter = pduel->game_field->core.spsummon_counter.find(counter_id);
if(iter != pduel->game_field->core.spsummon_counter.end()) if(iter != pduel->game_field->core.spsummon_counter.end())
val = iter->second.second; val = iter->second.second;
break; break;
} }
case 4: { case ACTIVITY_FLIPSUMMON: {
auto iter = pduel->game_field->core.flipsummon_counter.find(counter_id); auto iter = pduel->game_field->core.flipsummon_counter.find(counter_id);
if(iter != pduel->game_field->core.flipsummon_counter.end()) if(iter != pduel->game_field->core.flipsummon_counter.end())
val = iter->second.second; val = iter->second.second;
break; break;
} }
case 5: { case ACTIVITY_ATTACK: {
auto iter = pduel->game_field->core.attack_counter.find(counter_id); auto iter = pduel->game_field->core.attack_counter.find(counter_id);
if(iter != pduel->game_field->core.attack_counter.end()) if(iter != pduel->game_field->core.attack_counter.end())
val = iter->second.second; val = iter->second.second;
break; break;
} }
case 6: case ACTIVITY_BATTLE_PHASE:
break; break;
case 7: { case ACTIVITY_CHAIN: {
auto iter = pduel->game_field->core.chain_counter.find(counter_id); auto iter = pduel->game_field->core.chain_counter.find(counter_id);
if(iter != pduel->game_field->core.chain_counter.end()) if(iter != pduel->game_field->core.chain_counter.end())
val = iter->second.second; val = iter->second.second;
......
...@@ -1903,8 +1903,8 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui ...@@ -1903,8 +1903,8 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
case 17: { case 17: {
core.summon_state_count[sumplayer]++; core.summon_state_count[sumplayer]++;
core.normalsummon_state_count[sumplayer]++; core.normalsummon_state_count[sumplayer]++;
check_card_counter(target, 1, sumplayer); check_card_counter(target, ACTIVITY_SUMMON, sumplayer);
check_card_counter(target, 2, sumplayer); check_card_counter(target, ACTIVITY_NORMALSUMMON, sumplayer);
raise_single_event(target, 0, EVENT_SUMMON_SUCCESS, proc, 0, sumplayer, sumplayer, 0); raise_single_event(target, 0, EVENT_SUMMON_SUCCESS, proc, 0, sumplayer, sumplayer, 0);
process_single_event(); process_single_event();
raise_event(target, EVENT_SUMMON_SUCCESS, proc, 0, sumplayer, sumplayer, 0); raise_event(target, EVENT_SUMMON_SUCCESS, proc, 0, sumplayer, sumplayer, 0);
...@@ -1994,7 +1994,7 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target) { ...@@ -1994,7 +1994,7 @@ int32 field::flip_summon(uint16 step, uint8 sumplayer, card * target) {
case 4: { case 4: {
pduel->write_buffer8(MSG_FLIPSUMMONED); pduel->write_buffer8(MSG_FLIPSUMMONED);
core.flipsummon_state_count[sumplayer]++; core.flipsummon_state_count[sumplayer]++;
check_card_counter(target, 4, sumplayer); check_card_counter(target, ACTIVITY_FLIPSUMMON, sumplayer);
adjust_instant(); adjust_instant();
raise_single_event(target, 0, EVENT_FLIP, 0, 0, sumplayer, sumplayer, 0); 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); raise_single_event(target, 0, EVENT_FLIP_SUMMON_SUCCESS, 0, 0, sumplayer, sumplayer, 0);
...@@ -2334,7 +2334,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card* target, effect* proc, uint ...@@ -2334,7 +2334,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card* target, effect* proc, uint
set_control(target, target->current.controler, 0, 0); set_control(target, target->current.controler, 0, 0);
core.phase_action = TRUE; core.phase_action = TRUE;
core.normalsummon_state_count[setplayer]++; core.normalsummon_state_count[setplayer]++;
check_card_counter(target, 2, setplayer); check_card_counter(target, ACTIVITY_NORMALSUMMON, setplayer);
target->set_status(STATUS_SUMMON_TURN, TRUE); target->set_status(STATUS_SUMMON_TURN, TRUE);
pduel->write_buffer8(MSG_SET); pduel->write_buffer8(MSG_SET);
pduel->write_buffer32(target->data.code); pduel->write_buffer32(target->data.code);
...@@ -2872,7 +2872,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin ...@@ -2872,7 +2872,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
} }
case 17: { case 17: {
set_spsummon_counter(sumplayer); set_spsummon_counter(sumplayer);
check_card_counter(target, 3, sumplayer); check_card_counter(target, ACTIVITY_SPSUMMON, sumplayer);
if(target->spsummon_code) if(target->spsummon_code)
core.spsummon_once_map[sumplayer][target->spsummon_code]++; core.spsummon_once_map[sumplayer][target->spsummon_code]++;
raise_single_event(target, 0, EVENT_SPSUMMON_SUCCESS, core.units.begin()->peffect, 0, sumplayer, sumplayer, 0); raise_single_event(target, 0, EVENT_SPSUMMON_SUCCESS, core.units.begin()->peffect, 0, sumplayer, sumplayer, 0);
...@@ -3047,7 +3047,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin ...@@ -3047,7 +3047,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
group* pgroup = core.units.begin()->ptarget; group* pgroup = core.units.begin()->ptarget;
pduel->write_buffer8(MSG_SPSUMMONED); pduel->write_buffer8(MSG_SPSUMMONED);
set_spsummon_counter(sumplayer); set_spsummon_counter(sumplayer);
check_card_counter(pgroup, 3, sumplayer); check_card_counter(pgroup, ACTIVITY_SPSUMMON, sumplayer);
std::set<uint32> spsummon_once_set; std::set<uint32> spsummon_once_set;
for(auto& pcard : pgroup->container) { for(auto& pcard : pgroup->container) {
if(pcard->spsummon_code) if(pcard->spsummon_code)
...@@ -3252,7 +3252,7 @@ int32 field::special_summon(uint16 step, effect* reason_effect, uint8 reason_pla ...@@ -3252,7 +3252,7 @@ int32 field::special_summon(uint16 step, effect* reason_effect, uint8 reason_pla
case 3: { case 3: {
pduel->write_buffer8(MSG_SPSUMMONED); pduel->write_buffer8(MSG_SPSUMMONED);
for(auto& pcard : targets->container) { for(auto& pcard : targets->container) {
check_card_counter(pcard, 3, pcard->summon_player); check_card_counter(pcard, ACTIVITY_SPSUMMON, pcard->summon_player);
if(!(pcard->current.position & POS_FACEDOWN)) 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); 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; int32 summontype = pcard->summon_info & 0xff000000;
......
...@@ -2622,7 +2622,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -2622,7 +2622,7 @@ int32 field::process_battle_command(uint16 step) {
if(!core.units.begin()->arg1) { if(!core.units.begin()->arg1) {
core.phase_action = TRUE; core.phase_action = TRUE;
core.attack_state_count[infos.turn_player]++; core.attack_state_count[infos.turn_player]++;
check_card_counter(core.attacker, 5, infos.turn_player); check_card_counter(core.attacker, ACTIVITY_ATTACK, infos.turn_player);
core.attacker->attack_announce_count++; core.attacker->attack_announce_count++;
} }
if(core.units.begin()->arg3) {//attack announce failed if(core.units.begin()->arg3) {//attack announce failed
...@@ -3236,7 +3236,7 @@ int32 field::process_damage_step(uint16 step, uint32 new_attack) { ...@@ -3236,7 +3236,7 @@ int32 field::process_damage_step(uint16 step, uint32 new_attack) {
if(new_attack) { if(new_attack) {
core.attack_state_count[infos.turn_player]++; core.attack_state_count[infos.turn_player]++;
core.battled_count[infos.turn_player]++; core.battled_count[infos.turn_player]++;
check_card_counter(core.attacker, 5, infos.turn_player); check_card_counter(core.attacker, ACTIVITY_ATTACK, infos.turn_player);
} }
core.attacker->announced_cards.addcard(core.attack_target); core.attacker->announced_cards.addcard(core.attack_target);
attack_all_target_check(); attack_all_target_check();
......
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