Commit 4d5a4b40 authored by DailyShana's avatar DailyShana

add fusion type

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