Commit 1179f090 authored by nekrozar's avatar nekrozar Committed by nanahira

Add Card.IsAttack(#164)

parent 93056400
...@@ -111,6 +111,8 @@ static const struct luaL_Reg cardlib[] = { ...@@ -111,6 +111,8 @@ static const struct luaL_Reg cardlib[] = {
{ "IsLevel", scriptlib::card_is_level }, { "IsLevel", scriptlib::card_is_level },
{ "IsRank", scriptlib::card_is_rank }, { "IsRank", scriptlib::card_is_rank },
{ "IsLink", scriptlib::card_is_link }, { "IsLink", scriptlib::card_is_link },
{ "IsAttack", scriptlib::card_is_attack },
{ "IsDefense", scriptlib::card_is_defense },
{ "IsRace", scriptlib::card_is_race }, { "IsRace", scriptlib::card_is_race },
{ "IsLinkRace", scriptlib::card_is_link_race }, { "IsLinkRace", scriptlib::card_is_link_race },
{ "IsAttribute", scriptlib::card_is_attribute }, { "IsAttribute", scriptlib::card_is_attribute },
......
...@@ -946,6 +946,52 @@ int32 scriptlib::card_is_link(lua_State *L) { ...@@ -946,6 +946,52 @@ int32 scriptlib::card_is_link(lua_State *L) {
lua_pushboolean(L, result); lua_pushboolean(L, result);
return 1; return 1;
} }
int32 scriptlib::card_is_attack(lua_State *L) {
check_param_count(L, 2);
check_param(L, PARAM_TYPE_CARD, 1);
card* pcard = *(card**) lua_touserdata(L, 1);
if(!(pcard->data.type & TYPE_MONSTER) && !(pcard->get_type() & TYPE_MONSTER) && !(pcard->current.location & LOCATION_MZONE))
lua_pushboolean(L, 0);
else {
uint32 atk = pcard->get_attack();
uint32 count = lua_gettop(L) - 1;
uint32 result = FALSE;
for(uint32 i = 0; i < count; ++i) {
if(lua_isnil(L, i + 2))
continue;
uint32 tatk = lua_tointeger(L, i + 2);
if(atk == tatk) {
result = TRUE;
break;
}
}
lua_pushboolean(L, result);
}
return 1;
}
int32 scriptlib::card_is_defense(lua_State *L) {
check_param_count(L, 2);
check_param(L, PARAM_TYPE_CARD, 1);
card* pcard = *(card**) lua_touserdata(L, 1);
if((pcard->data.type & TYPE_LINK) || (!(pcard->data.type & TYPE_MONSTER) && !(pcard->get_type() & TYPE_MONSTER) && !(pcard->current.location & LOCATION_MZONE)))
lua_pushboolean(L, 0);
else {
uint32 def = pcard->get_defense();
uint32 count = lua_gettop(L) - 1;
uint32 result = FALSE;
for(uint32 i = 0; i < count; ++i) {
if(lua_isnil(L, i + 2))
continue;
uint32 tdef = lua_tointeger(L, i + 2);
if(def == tdef) {
result = TRUE;
break;
}
}
lua_pushboolean(L, result);
}
return 1;
}
int32 scriptlib::card_is_race(lua_State *L) { int32 scriptlib::card_is_race(lua_State *L) {
check_param_count(L, 2); check_param_count(L, 2);
check_param(L, PARAM_TYPE_CARD, 1); check_param(L, PARAM_TYPE_CARD, 1);
......
...@@ -113,6 +113,8 @@ public: ...@@ -113,6 +113,8 @@ public:
static int32 card_is_level(lua_State *L); static int32 card_is_level(lua_State *L);
static int32 card_is_rank(lua_State *L); static int32 card_is_rank(lua_State *L);
static int32 card_is_link(lua_State *L); static int32 card_is_link(lua_State *L);
static int32 card_is_attack(lua_State *L);
static int32 card_is_defense(lua_State *L);
static int32 card_is_race(lua_State *L); static int32 card_is_race(lua_State *L);
static int32 card_is_link_race(lua_State *L); static int32 card_is_link_race(lua_State *L);
static int32 card_is_attribute(lua_State *L); static int32 card_is_attribute(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