Commit 4d5a4b40 authored by DailyShana's avatar DailyShana

add fusion type

parent 9d4ac1d3
......@@ -395,6 +395,11 @@ uint32 card::get_type() {
temp.type = 0xffffffff;
return type;
}
uint32 card::get_fusion_type() {
if(current.location == LOCATION_SZONE)
return data.type;
return get_type();
}
// Atk and def are sepcial cases since text atk/def ? are involved.
// Asuumption: we can only change the atk/def of cards in LOCATION_MZONE.
int32 card::get_base_attack() {
......@@ -942,7 +947,7 @@ uint32 card::get_fusion_attribute(uint8 playerid) {
filter_effect(EFFECT_CHANGE_FUSION_ATTRIBUTE, &effects);
if(!effects.size())
return get_attribute();
uint32 attribute;
uint32 attribute = 0;
for(int32 i = 0; i < effects.size(); ++i) {
pduel->lua->add_param(playerid, PARAM_TYPE_INT);
attribute = effects[i]->get_value(this, 1);
......
......@@ -169,6 +169,7 @@ public:
int32 is_pre_set_card(uint32 set_code);
int32 is_fusion_set_card(uint32 set_code);
uint32 get_type();
uint32 get_fusion_type();
int32 get_base_attack();
int32 get_attack();
int32 get_base_defense();
......
......@@ -26,6 +26,7 @@ static const struct luaL_Reg cardlib[] = {
{ "IsFusionSetCard", scriptlib::card_is_fusion_set_card },
{ "GetType", scriptlib::card_get_type },
{ "GetOriginalType", scriptlib::card_get_origin_type },
{ "GetFusionType", scriptlib::card_get_fusion_type },
{ "GetLevel", scriptlib::card_get_level },
{ "GetRank", scriptlib::card_get_rank },
{ "GetSynchroLevel", scriptlib::card_get_synchro_level },
......@@ -80,6 +81,7 @@ static const struct luaL_Reg cardlib[] = {
{ "GetRealFieldID", scriptlib::card_get_fieldidr },
{ "IsCode", scriptlib::card_is_code },
{ "IsType", scriptlib::card_is_type },
{ "IsFusionType", scriptlib::card_is_fusion_type },
{ "IsRace", scriptlib::card_is_race },
{ "IsAttribute", scriptlib::card_is_attribute },
{ "IsFusionAttribute", scriptlib::card_is_fusion_attribute },
......
......@@ -146,6 +146,13 @@ int32 scriptlib::card_get_origin_type(lua_State *L) {
lua_pushinteger(L, pcard->data.type);
return 1;
}
int32 scriptlib::card_get_fusion_type(lua_State *L) {
check_param_count(L, 1);
check_param(L, PARAM_TYPE_CARD, 1);
card* pcard = *(card**) lua_touserdata(L, 1);
lua_pushinteger(L, pcard->get_fusion_type());
return 1;
}
int32 scriptlib::card_get_level(lua_State *L) {
check_param_count(L, 1);
check_param(L, PARAM_TYPE_CARD, 1);
......@@ -576,6 +583,17 @@ int32 scriptlib::card_is_type(lua_State *L) {
lua_pushboolean(L, 0);
return 1;
}
int32 scriptlib::card_is_fusion_type(lua_State *L) {
check_param_count(L, 2);
check_param(L, PARAM_TYPE_CARD, 1);
card* pcard = *(card**) lua_touserdata(L, 1);
uint32 ttype = lua_tointeger(L, 2);
if(pcard->get_fusion_type() & ttype)
lua_pushboolean(L, 1);
else
lua_pushboolean(L, 0);
return 1;
}
int32 scriptlib::card_is_race(lua_State *L) {
check_param_count(L, 2);
check_param(L, PARAM_TYPE_CARD, 1);
......
......@@ -28,6 +28,7 @@ public:
static int32 card_is_fusion_set_card(lua_State *L);
static int32 card_get_type(lua_State *L);
static int32 card_get_origin_type(lua_State *L);
static int32 card_get_fusion_type(lua_State *L);
static int32 card_get_level(lua_State *L);
static int32 card_get_rank(lua_State *L);
static int32 card_get_synchro_level(lua_State *L);
......@@ -82,6 +83,7 @@ public:
static int32 card_get_fieldidr(lua_State *L);
static int32 card_is_code(lua_State *L);
static int32 card_is_type(lua_State *L);
static int32 card_is_fusion_type(lua_State *L);
static int32 card_is_race(lua_State *L);
static int32 card_is_attribute(lua_State *L);
static int32 card_is_fusion_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