Commit 11c76618 authored by salix5's avatar salix5

add lua_State* to get_xyz_material

parent bfbd9ded
...@@ -1932,13 +1932,13 @@ void field::ritual_release(card_set* material) { ...@@ -1932,13 +1932,13 @@ void field::ritual_release(card_set* material) {
release(&rel, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player); release(&rel, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player);
send_to(&rem, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player, PLAYER_NONE, LOCATION_REMOVED, 0, POS_FACEUP); send_to(&rem, core.reason_effect, REASON_RITUAL + REASON_EFFECT + REASON_MATERIAL, core.reason_player, PLAYER_NONE, LOCATION_REMOVED, 0, POS_FACEUP);
} }
void field::get_xyz_material(card* scard, int32 findex, uint32 lv, int32 maxc, group* mg) { void field::get_xyz_material(lua_State* L, card* scard, int32 findex, uint32 lv, int32 maxc, group* mg) {
core.xmaterial_lst.clear(); core.xmaterial_lst.clear();
uint32 xyz_level; uint32 xyz_level;
if(mg) { if(mg) {
for (auto& pcard : mg->container) { for (auto& pcard : mg->container) {
if(pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv)) if(pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv))
&& (findex == 0 || pduel->lua->check_matching(pcard, findex, 0))) && (findex == 0 || pduel->lua->check_filter(L, pcard, findex, 0)))
core.xmaterial_lst.emplace((xyz_level >> 12) & 0xf, pcard); core.xmaterial_lst.emplace((xyz_level >> 12) & 0xf, pcard);
} }
} else { } else {
...@@ -1946,13 +1946,13 @@ void field::get_xyz_material(card* scard, int32 findex, uint32 lv, int32 maxc, g ...@@ -1946,13 +1946,13 @@ void field::get_xyz_material(card* scard, int32 findex, uint32 lv, int32 maxc, g
for(auto& pcard : player[playerid].list_mzone) { for(auto& pcard : player[playerid].list_mzone) {
if(pcard && pcard->is_position(POS_FACEUP) && !pcard->is_treated_as_not_on_field() if(pcard && pcard->is_position(POS_FACEUP) && !pcard->is_treated_as_not_on_field()
&& pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv)) && pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv))
&& (findex == 0 || pduel->lua->check_matching(pcard, findex, 0))) && (findex == 0 || pduel->lua->check_filter(L, pcard, findex, 0)))
core.xmaterial_lst.emplace((xyz_level >> 12) & 0xf, pcard); core.xmaterial_lst.emplace((xyz_level >> 12) & 0xf, pcard);
} }
for(auto& pcard : player[1 - playerid].list_mzone) { for(auto& pcard : player[1 - playerid].list_mzone) {
if(pcard && pcard->is_position(POS_FACEUP) && !pcard->is_treated_as_not_on_field() if(pcard && pcard->is_position(POS_FACEUP) && !pcard->is_treated_as_not_on_field()
&& pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv)) && pcard->is_can_be_xyz_material(scard) && (xyz_level = pcard->check_xyz_level(scard, lv))
&& pcard->is_affected_by_effect(EFFECT_XYZ_MATERIAL) && (findex == 0 || pduel->lua->check_matching(pcard, findex, 0))) && pcard->is_affected_by_effect(EFFECT_XYZ_MATERIAL) && (findex == 0 || pduel->lua->check_filter(L, pcard, findex, 0)))
core.xmaterial_lst.emplace((xyz_level >> 12) & 0xf, pcard); core.xmaterial_lst.emplace((xyz_level >> 12) & 0xf, pcard);
} }
} }
...@@ -2916,8 +2916,8 @@ int32 field::check_with_sum_greater_limit_m(const card_vector& mats, int32 acc, ...@@ -2916,8 +2916,8 @@ int32 field::check_with_sum_greater_limit_m(const card_vector& mats, int32 acc,
return TRUE; return TRUE;
return FALSE; return FALSE;
} }
int32 field::check_xyz_material(card* scard, int32 findex, int32 lv, int32 min, int32 max, group* mg) { int32 field::check_xyz_material(lua_State* L, card* scard, int32 findex, int32 lv, int32 min, int32 max, group* mg) {
get_xyz_material(scard, findex, lv, max, mg); get_xyz_material(L, scard, findex, lv, max, mg);
int32 playerid = scard->current.controler; int32 playerid = scard->current.controler;
int32 ct = get_spsummonable_count(scard, playerid); int32 ct = get_spsummonable_count(scard, playerid);
card_set handover_zone_cards; card_set handover_zone_cards;
......
...@@ -445,7 +445,7 @@ public: ...@@ -445,7 +445,7 @@ public:
void get_ritual_material(uint8 playerid, effect* peffect, card_set* material, uint8 no_level = FALSE); void get_ritual_material(uint8 playerid, effect* peffect, card_set* material, uint8 no_level = FALSE);
void get_fusion_material(uint8 playerid, card_set* material_all, card_set* material_base, uint32 location); void get_fusion_material(uint8 playerid, card_set* material_all, card_set* material_base, uint32 location);
void ritual_release(card_set* material); void ritual_release(card_set* material);
void get_xyz_material(card* scard, int32 findex, uint32 lv, int32 maxc, group* mg); void get_xyz_material(lua_State* L, card* scard, int32 findex, uint32 lv, int32 maxc, group* mg);
void get_overlay_group(uint8 self, uint8 s, uint8 o, card_set* pset); void get_overlay_group(uint8 self, uint8 s, uint8 o, card_set* pset);
int32 get_overlay_count(uint8 self, uint8 s, uint8 o); int32 get_overlay_count(uint8 self, uint8 s, uint8 o);
void update_disable_check_list(effect* peffect); void update_disable_check_list(effect* peffect);
...@@ -485,7 +485,7 @@ public: ...@@ -485,7 +485,7 @@ public:
static int32 check_with_sum_limit_m(const card_vector& mats, int32 acc, int32 index, int32 min, int32 max, int32 opmin, int32 must_count); static int32 check_with_sum_limit_m(const card_vector& mats, int32 acc, int32 index, int32 min, int32 max, int32 opmin, int32 must_count);
static int32 check_with_sum_greater_limit(const card_vector& mats, int32 acc, int32 index, int32 opmin); static int32 check_with_sum_greater_limit(const card_vector& mats, int32 acc, int32 index, int32 opmin);
static int32 check_with_sum_greater_limit_m(const card_vector& mats, int32 acc, int32 index, int32 opmin, int32 must_count); static int32 check_with_sum_greater_limit_m(const card_vector& mats, int32 acc, int32 index, int32 opmin, int32 must_count);
int32 check_xyz_material(card* pcard, int32 findex, int32 lv, int32 min, int32 max, group* mg); int32 check_xyz_material(lua_State* L, card* pcard, int32 findex, int32 lv, int32 min, int32 max, group* mg);
int32 is_player_can_draw(uint8 playerid); int32 is_player_can_draw(uint8 playerid);
int32 is_player_can_discard_deck(uint8 playerid, int32 count); int32 is_player_can_discard_deck(uint8 playerid, int32 count);
......
...@@ -3581,7 +3581,7 @@ int32 scriptlib::duel_check_xyz_material(lua_State *L) { ...@@ -3581,7 +3581,7 @@ int32 scriptlib::duel_check_xyz_material(lua_State *L) {
check_param(L, PARAM_TYPE_GROUP, 6); check_param(L, PARAM_TYPE_GROUP, 6);
mg = *(group**) lua_touserdata(L, 6); mg = *(group**) lua_touserdata(L, 6);
} }
lua_pushboolean(L, scard->pduel->game_field->check_xyz_material(scard, findex, lv, minc, maxc, mg)); lua_pushboolean(L, scard->pduel->game_field->check_xyz_material(L, scard, findex, lv, minc, maxc, mg));
return 1; return 1;
} }
int32 scriptlib::duel_select_xyz_material(lua_State *L) { int32 scriptlib::duel_select_xyz_material(lua_State *L) {
...@@ -3604,9 +3604,9 @@ int32 scriptlib::duel_select_xyz_material(lua_State *L) { ...@@ -3604,9 +3604,9 @@ int32 scriptlib::duel_select_xyz_material(lua_State *L) {
mg = *(group**) lua_touserdata(L, 7); mg = *(group**) lua_touserdata(L, 7);
} }
duel* pduel = scard->pduel; duel* pduel = scard->pduel;
if(!pduel->game_field->check_xyz_material(scard, findex, lv, minc, maxc, mg)) if(!pduel->game_field->check_xyz_material(L, scard, findex, lv, minc, maxc, mg))
return 0; return 0;
pduel->game_field->get_xyz_material(scard, findex, lv, maxc, mg); pduel->game_field->get_xyz_material(L, scard, findex, lv, maxc, mg);
scard->pduel->game_field->add_process(PROCESSOR_SELECT_XMATERIAL, 0, 0, (group*)scard, playerid + (lv << 16), minc + (maxc << 16)); scard->pduel->game_field->add_process(PROCESSOR_SELECT_XMATERIAL, 0, 0, (group*)scard, playerid + (lv << 16), minc + (maxc << 16));
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