Commit c72f48cd authored by DailyShana's avatar DailyShana

tribute opponent's monsters

parent aa1d5bb5
...@@ -1189,7 +1189,7 @@ int32 field::check_release_list(uint8 playerid, int32 count, int32 use_con, int3 ...@@ -1189,7 +1189,7 @@ int32 field::check_release_list(uint8 playerid, int32 count, int32 use_con, int3
} }
return FALSE; return FALSE;
} }
int32 field::get_summon_release_list(card* target, card_set* release_list, card_set* ex_list, card_set* ex_list_sum, group* mg) { int32 field::get_summon_release_list(card* target, card_set* release_list, card_set* ex_list, card_set* ex_list_sum, group* mg, uint32 ex) {
uint8 p = target->current.controler; uint8 p = target->current.controler;
card* pcard; card* pcard;
uint32 rcount = 0; uint32 rcount = 0;
...@@ -1214,7 +1214,7 @@ int32 field::get_summon_release_list(card* target, card_set* release_list, card_ ...@@ -1214,7 +1214,7 @@ int32 field::get_summon_release_list(card* target, card_set* release_list, card_
continue; continue;
if(mg && !mg->has_card(pcard)) if(mg && !mg->has_card(pcard))
continue; continue;
if(pcard->is_affected_by_effect(EFFECT_EXTRA_RELEASE)) { if(ex || pcard->is_affected_by_effect(EFFECT_EXTRA_RELEASE)) {
if(ex_list) if(ex_list)
ex_list->insert(pcard); ex_list->insert(pcard);
if(pcard->is_affected_by_effect(EFFECT_DOUBLE_TRIBUTE, target)) if(pcard->is_affected_by_effect(EFFECT_DOUBLE_TRIBUTE, target))
......
...@@ -350,7 +350,7 @@ public: ...@@ -350,7 +350,7 @@ public:
int32 get_release_list(uint8 playerid, card_set* release_list, card_set* ex_list, int32 use_con, int32 use_hand, int32 fun, int32 exarg, card* exp); int32 get_release_list(uint8 playerid, card_set* release_list, card_set* ex_list, int32 use_con, int32 use_hand, int32 fun, int32 exarg, card* exp);
int32 check_release_list(uint8 playerid, int32 count, int32 use_con, int32 use_hand, int32 fun, int32 exarg, card* exp); int32 check_release_list(uint8 playerid, int32 count, int32 use_con, int32 use_hand, int32 fun, int32 exarg, card* exp);
int32 get_summon_release_list(card* target, card_set* release_list, card_set* ex_list, card_set* ex_list_sum, group* mg = 0); int32 get_summon_release_list(card* target, card_set* release_list, card_set* ex_list, card_set* ex_list_sum, group* mg = 0, uint32 ex = 0);
int32 get_summon_count_limit(uint8 playerid); int32 get_summon_count_limit(uint8 playerid);
int32 get_draw_count(uint8 playerid); int32 get_draw_count(uint8 playerid);
void get_ritual_material(uint8 playerid, effect* peffect, card_set* material); void get_ritual_material(uint8 playerid, effect* peffect, card_set* material);
......
...@@ -1894,8 +1894,11 @@ int32 scriptlib::duel_get_tribute_count(lua_State *L) { ...@@ -1894,8 +1894,11 @@ int32 scriptlib::duel_get_tribute_count(lua_State *L) {
check_param(L, PARAM_TYPE_GROUP, 2); check_param(L, PARAM_TYPE_GROUP, 2);
mg = *(group**) lua_touserdata(L, 2); mg = *(group**) lua_touserdata(L, 2);
} }
uint32 ex = 0;
if(lua_gettop(L) >= 3)
ex = lua_toboolean(L, 3);
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
lua_pushinteger(L, pduel->game_field->get_summon_release_list(target, 0, 0, 0, mg)); lua_pushinteger(L, pduel->game_field->get_summon_release_list(target, 0, 0, 0, mg, ex));
return 1; return 1;
} }
int32 scriptlib::duel_select_tribute(lua_State *L) { int32 scriptlib::duel_select_tribute(lua_State *L) {
...@@ -1913,11 +1916,14 @@ int32 scriptlib::duel_select_tribute(lua_State *L) { ...@@ -1913,11 +1916,14 @@ int32 scriptlib::duel_select_tribute(lua_State *L) {
check_param(L, PARAM_TYPE_GROUP, 5); check_param(L, PARAM_TYPE_GROUP, 5);
mg = *(group**) lua_touserdata(L, 5); mg = *(group**) lua_touserdata(L, 5);
} }
uint32 ex = 0;
if(lua_gettop(L) >= 6)
ex = lua_toboolean(L, 6);
duel* pduel = interpreter::get_duel_info(L); duel* pduel = interpreter::get_duel_info(L);
pduel->game_field->core.release_cards.clear(); pduel->game_field->core.release_cards.clear();
pduel->game_field->core.release_cards_ex.clear(); pduel->game_field->core.release_cards_ex.clear();
pduel->game_field->core.release_cards_ex_sum.clear(); pduel->game_field->core.release_cards_ex_sum.clear();
pduel->game_field->get_summon_release_list(target, &pduel->game_field->core.release_cards, &pduel->game_field->core.release_cards_ex, &pduel->game_field->core.release_cards_ex_sum, mg); pduel->game_field->get_summon_release_list(target, &pduel->game_field->core.release_cards, &pduel->game_field->core.release_cards_ex, &pduel->game_field->core.release_cards_ex_sum, mg, ex);
pduel->game_field->add_process(PROCESSOR_SELECT_TRIBUTE_S, 0, 0, 0, playerid, (max << 16) + min); pduel->game_field->add_process(PROCESSOR_SELECT_TRIBUTE_S, 0, 0, 0, playerid, (max << 16) + min);
return lua_yield(L, 0); return lua_yield(L, 0);
} }
......
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