Commit 3ea372fb authored by nekrozar's avatar nekrozar Committed by mercury233

add Card.IsCanOverlay (#244)

parent ad1b62b1
...@@ -3700,6 +3700,15 @@ int32 card::is_capable_be_effect_target(effect* peffect, uint8 playerid) { ...@@ -3700,6 +3700,15 @@ int32 card::is_capable_be_effect_target(effect* peffect, uint8 playerid) {
} }
return TRUE; return TRUE;
} }
int32 card::is_capable_overlay(uint8 playerid) {
if(data.type & TYPE_TOKEN)
return FALSE;
if(!(current.location & LOCATION_ONFIELD) && is_status(STATUS_FORBIDDEN))
return FALSE;
if(current.controler != playerid && !is_capable_change_control())
return FALSE;
return TRUE;
}
int32 card::is_can_be_fusion_material(card* fcard, uint32 summon_type) { int32 card::is_can_be_fusion_material(card* fcard, uint32 summon_type) {
if(is_status(STATUS_FORBIDDEN)) if(is_status(STATUS_FORBIDDEN))
return FALSE; return FALSE;
......
...@@ -342,6 +342,7 @@ public: ...@@ -342,6 +342,7 @@ public:
int32 is_control_can_be_changed(int32 ignore_mzone, uint32 zone); int32 is_control_can_be_changed(int32 ignore_mzone, uint32 zone);
int32 is_capable_be_battle_target(card* pcard); int32 is_capable_be_battle_target(card* pcard);
int32 is_capable_be_effect_target(effect* peffect, uint8 playerid); int32 is_capable_be_effect_target(effect* peffect, uint8 playerid);
int32 is_capable_overlay(uint8 playerid);
int32 is_can_be_fusion_material(card* fcard, uint32 summon_type); int32 is_can_be_fusion_material(card* fcard, uint32 summon_type);
int32 is_can_be_synchro_material(card* scard, card* tuner = 0); int32 is_can_be_synchro_material(card* scard, card* tuner = 0);
int32 is_can_be_ritual_material(card* scard); int32 is_can_be_ritual_material(card* scard);
......
...@@ -242,6 +242,7 @@ static const struct luaL_Reg cardlib[] = { ...@@ -242,6 +242,7 @@ static const struct luaL_Reg cardlib[] = {
{ "IsCanTurnSet", scriptlib::card_is_can_turn_set }, { "IsCanTurnSet", scriptlib::card_is_can_turn_set },
{ "IsCanAddCounter", scriptlib::card_is_can_add_counter }, { "IsCanAddCounter", scriptlib::card_is_can_add_counter },
{ "IsCanRemoveCounter", scriptlib::card_is_can_remove_counter }, { "IsCanRemoveCounter", scriptlib::card_is_can_remove_counter },
{ "IsCanOverlay", scriptlib::card_is_can_overlay },
{ "IsCanBeFusionMaterial", scriptlib::card_is_can_be_fusion_material }, { "IsCanBeFusionMaterial", scriptlib::card_is_can_be_fusion_material },
{ "IsCanBeSynchroMaterial", scriptlib::card_is_can_be_synchro_material }, { "IsCanBeSynchroMaterial", scriptlib::card_is_can_be_synchro_material },
{ "IsCanBeRitualMaterial", scriptlib::card_is_can_be_ritual_material }, { "IsCanBeRitualMaterial", scriptlib::card_is_can_be_ritual_material },
......
...@@ -2725,6 +2725,16 @@ int32 scriptlib::card_is_can_remove_counter(lua_State *L) { ...@@ -2725,6 +2725,16 @@ int32 scriptlib::card_is_can_remove_counter(lua_State *L) {
lua_pushboolean(L, pcard->pduel->game_field->is_player_can_remove_counter(playerid, pcard, 0, 0, countertype, count, reason)); lua_pushboolean(L, pcard->pduel->game_field->is_player_can_remove_counter(playerid, pcard, 0, 0, countertype, count, reason));
return 1; return 1;
} }
int32 scriptlib::card_is_can_overlay(lua_State *L) {
check_param_count(L, 1);
check_param(L, PARAM_TYPE_CARD, 1);
card* pcard = *(card**) lua_touserdata(L, 1);
uint8 playerid = pcard->pduel->game_field->core.reason_player;
if(lua_gettop(L) > 1 && !lua_isnil(L, 2))
playerid = lua_tointeger(L, 2);
lua_pushboolean(L, pcard->is_capable_overlay(playerid));
return 1;
}
int32 scriptlib::card_is_can_be_fusion_material(lua_State *L) { int32 scriptlib::card_is_can_be_fusion_material(lua_State *L) {
check_param_count(L, 1); check_param_count(L, 1);
check_param(L, PARAM_TYPE_CARD, 1); check_param(L, PARAM_TYPE_CARD, 1);
......
...@@ -246,6 +246,7 @@ public: ...@@ -246,6 +246,7 @@ public:
static int32 card_is_can_turn_set(lua_State *L); static int32 card_is_can_turn_set(lua_State *L);
static int32 card_is_can_add_counter(lua_State *L); static int32 card_is_can_add_counter(lua_State *L);
static int32 card_is_can_remove_counter(lua_State *L); static int32 card_is_can_remove_counter(lua_State *L);
static int32 card_is_can_overlay(lua_State *L);
static int32 card_is_can_be_fusion_material(lua_State *L); static int32 card_is_can_be_fusion_material(lua_State *L);
static int32 card_is_can_be_synchro_material(lua_State *L); static int32 card_is_can_be_synchro_material(lua_State *L);
static int32 card_is_can_be_ritual_material(lua_State *L); static int32 card_is_can_be_ritual_material(lua_State *L);
......
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