Commit 95eb5a6a authored by MobiusMei's avatar MobiusMei

Merge remote-tracking branch 'origin/master'

parents 0a10d8ab 4098ec72
...@@ -18,6 +18,11 @@ local extra_sp={ ...@@ -18,6 +18,11 @@ local extra_sp={
[TYPE_LINK]={[0]={},[1]={}}, [TYPE_LINK]={[0]={},[1]={}},
} }
local xyz_plain={[0]={},[1]={}}
local xyz_adv={[0]={},[1]={}}
local extra_fixed={62709239,95169481}
function Auxiliary.SplitData(inputstr) function Auxiliary.SplitData(inputstr)
local t={} local t={}
for str in string.gmatch(inputstr,"([^|]+)") do for str in string.gmatch(inputstr,"([^|]+)") do
...@@ -44,6 +49,13 @@ function Auxiliary.LoadDB(p,pool) ...@@ -44,6 +49,13 @@ function Auxiliary.LoadDB(p,pool)
table.insert(list[p],code) table.insert(list[p],code)
end end
end end
if (cat & TYPE_XYZ)>0 then
if lv>4 then
table.insert(xyz_adv[p],code)
else
table.insert(xyz_plain[p],code)
end
end
elseif (cat & TYPE_TOKEN)==0 then elseif (cat & TYPE_TOKEN)==0 then
if (cat & TYPE_MONSTER)>0 then if (cat & TYPE_MONSTER)>0 then
table.insert(main_monster[p],code) table.insert(main_monster[p],code)
...@@ -81,7 +93,7 @@ function Auxiliary.SaveDeck() ...@@ -81,7 +93,7 @@ function Auxiliary.SaveDeck()
Duel.SavePickDeck(p,g) Duel.SavePickDeck(p,g)
end end
end end
function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy) function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy,lv_diff,fixed)
if not Duel.IsPlayerNeedToPickDeck(p) then return end if not Duel.IsPlayerNeedToPickDeck(p) then return end
local g1=Group.CreateGroup() local g1=Group.CreateGroup()
local g2=Group.CreateGroup() local g2=Group.CreateGroup()
...@@ -95,7 +107,8 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy) ...@@ -95,7 +107,8 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy)
local pick_count=0 local pick_count=0
while pick_count<count do while pick_count<count do
local code=plist[math.random(#plist)] local code=plist[math.random(#plist)]
if not ag:IsExists(Card.IsCode,1,nil,code) then local lv=Duel.ReadCard(code,CARDDATA_LEVEL)
if not ag:IsExists(Card.IsCode,1,nil,code) and not (lv_diff and g:IsExists(Card.IsLevel,1,nil,lv)) then
local card=Duel.CreateToken(p,code) local card=Duel.CreateToken(p,code)
g:AddCard(card) g:AddCard(card)
ag:AddCard(card) ag:AddCard(card)
...@@ -111,7 +124,8 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy) ...@@ -111,7 +124,8 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy)
local ex_pick_count=0 local ex_pick_count=0
while ex_pick_count<ex_count do while ex_pick_count<ex_count do
local code=ex_plist[math.random(#ex_plist)] local code=ex_plist[math.random(#ex_plist)]
if not ag:IsExists(Card.IsCode,1,nil,code) then local lv=Duel.ReadCard(code,CARDDATA_LEVEL)
if not ag:IsExists(Card.IsCode,1,nil,code) and not (lv_diff and g:IsExists(Card.IsLevel,1,nil,lv)) then
local card=Duel.CreateToken(p,code) local card=Duel.CreateToken(p,code)
g:AddCard(card) g:AddCard(card)
ag:AddCard(card) ag:AddCard(card)
...@@ -119,6 +133,12 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy) ...@@ -119,6 +133,12 @@ function Auxiliary.SinglePick(p,list,count,ex_list,ex_count,copy)
end end
end end
end end
if fixed then
for _,code in ipairs(fixed) do
local card=Duel.CreateToken(p,code)
g:AddCard(card)
end
end
Duel.SendtoDeck(g,nil,0,REASON_RULE) Duel.SendtoDeck(g,nil,0,REASON_RULE)
end end
local sg=g1:Clone() local sg=g1:Clone()
...@@ -176,13 +196,22 @@ function Auxiliary.StartPick(e) ...@@ -176,13 +196,22 @@ function Auxiliary.StartPick(e)
for tp,list in pairs(extra_sp) do for tp,list in pairs(extra_sp) do
if tp~=TYPE_FUSION then if tp~=TYPE_FUSION then
for p=0,1 do for p=0,1 do
Auxiliary.SinglePick(p,list,4,nil,nil,false) if tp==TYPE_XYZ then
Auxiliary.SinglePick(p,xyz_plain,3,xyz_adv,1,false)
else
local lv_diff=(tp==TYPE_SYNCHRO)
Auxiliary.SinglePick(p,list,4,nil,nil,false,lv_diff)
end
end end
end end
end end
for i=1,2 do for i=1,2 do
for p=0,1 do for p=0,1 do
Auxiliary.SinglePick(p,extra,4,nil,nil,false) if i==1 then
Auxiliary.SinglePick(p,extra,4,nil,nil,false)
else
Auxiliary.SinglePick(p,extra,2,nil,nil,false,false,extra_fixed)
end
end end
end end
Auxiliary.SaveDeck() Auxiliary.SaveDeck()
......
...@@ -1007,6 +1007,11 @@ uint32 card::get_ritual_level(card* pcard) { ...@@ -1007,6 +1007,11 @@ uint32 card::get_ritual_level(card* pcard) {
uint32 card::check_xyz_level(card* pcard, uint32 lv) { uint32 card::check_xyz_level(card* pcard, uint32 lv) {
if(status & STATUS_NO_LEVEL) if(status & STATUS_NO_LEVEL)
return 0; return 0;
//modded - rose xyz summon
card* rcard = pduel->game_field->rose_card;
uint32 rlv = pduel->game_field->rose_level;
if(rcard == this && rlv == lv)
return rlv;
uint32 lev; uint32 lev;
effect_set eset; effect_set eset;
filter_effect(EFFECT_XYZ_LEVEL, &eset); filter_effect(EFFECT_XYZ_LEVEL, &eset);
......
...@@ -18,6 +18,9 @@ duel::duel() { ...@@ -18,6 +18,9 @@ duel::duel() {
lua = new interpreter(this); lua = new interpreter(this);
game_field = new field(this); game_field = new field(this);
game_field->temp_card = new_card(0); game_field->temp_card = new_card(0);
//modded - for rose xyz summon
game_field->rose_card = 0;
game_field->rose_level = 0;
clear_buffer(); clear_buffer();
} }
duel::~duel() { duel::~duel() {
...@@ -43,6 +46,9 @@ void duel::clear() { ...@@ -43,6 +46,9 @@ void duel::clear() {
effects.clear(); effects.clear();
game_field = new field(this); game_field = new field(this);
game_field->temp_card = new_card(0); game_field->temp_card = new_card(0);
//modded - for rose xyz summon
game_field->rose_card = 0;
game_field->rose_level = 0;
} }
card* duel::new_card(uint32 code) { card* duel::new_card(uint32 code) {
card* pcard = new card(this); card* pcard = new card(this);
......
...@@ -342,6 +342,9 @@ public: ...@@ -342,6 +342,9 @@ public:
processor core; processor core;
return_value returns; return_value returns;
tevent nil_event; tevent nil_event;
//modded - for rose xyz summon
card* rose_card;
uint32 rose_level;
static int32 field_used_count[32]; static int32 field_used_count[32];
explicit field(duel* pduel); explicit field(duel* pduel);
...@@ -913,7 +916,23 @@ public: ...@@ -913,7 +916,23 @@ public:
#define MSG_CUSTOM_MSG 180 #define MSG_CUSTOM_MSG 180
#define MSG_SELECT_UNSELECT_CARD 190 #define MSG_SELECT_UNSELECT_CARD 190
//card datas for Duel.ReadCard / Card.SetCardData, arranged by database format
#define CARDDATA_CODE 1
#define CARDDATA_ALIAS 2
#define CARDDATA_SETCODE 3
#define CARDDATA_TYPE 4
#define CARDDATA_LEVEL 5
#define CARDDATA_ATTRIBUTE 6
#define CARDDATA_RACE 7
#define CARDDATA_ATTACK 8
#define CARDDATA_DEFENSE 9
#define CARDDATA_LSCALE 10
#define CARDDATA_RSCALE 11
#define CARDDATA_LINK_MARKER 12
//2pick //2pick
#define MSG_SAVE_PICK_DECK 220 #define MSG_SAVE_PICK_DECK 220
#define MSG_RESET_TIME 221 #define MSG_RESET_TIME 221
#endif /* FIELD_H_ */ #endif /* FIELD_H_ */
...@@ -23,6 +23,7 @@ static const struct luaL_Reg cardlib[] = { ...@@ -23,6 +23,7 @@ static const struct luaL_Reg cardlib[] = {
{ "SetCardData", scriptlib::card_set_card_data }, { "SetCardData", scriptlib::card_set_card_data },
{ "GetLinkMarker", scriptlib::card_get_link_marker }, { "GetLinkMarker", scriptlib::card_get_link_marker },
{ "GetOriginalLinkMarker", scriptlib::card_get_origin_link_marker }, { "GetOriginalLinkMarker", scriptlib::card_get_origin_link_marker },
{ "IsXyzSummonableByRose", scriptlib::card_is_xyz_summonable_by_rose },
{ "GetCode", scriptlib::card_get_code }, { "GetCode", scriptlib::card_get_code },
{ "GetOriginalCode", scriptlib::card_get_origin_code }, { "GetOriginalCode", scriptlib::card_get_origin_code },
...@@ -387,7 +388,9 @@ static const struct luaL_Reg duellib[] = { ...@@ -387,7 +388,9 @@ static const struct luaL_Reg duellib[] = {
{ "Exile", scriptlib::duel_exile }, { "Exile", scriptlib::duel_exile },
{ "DisableActionCheck", scriptlib::duel_disable_action_check }, { "DisableActionCheck", scriptlib::duel_disable_action_check },
{ "SetMetatable", scriptlib::duel_setmetatable }, { "SetMetatable", scriptlib::duel_setmetatable },
{ "MoveTurnCount", scriptlib::duel_move_turn_count }, { "MoveTurnCount", scriptlib::duel_move_turn_count },
{ "GetCardsInZone", scriptlib::duel_get_cards_in_zone },
{ "XyzSummonByRose", scriptlib::duel_xyz_summon_by_rose },
{ "EnableGlobalFlag", scriptlib::duel_enable_global_flag }, { "EnableGlobalFlag", scriptlib::duel_enable_global_flag },
{ "GetLP", scriptlib::duel_get_lp }, { "GetLP", scriptlib::duel_get_lp },
...@@ -659,6 +662,34 @@ interpreter::interpreter(duel* pd): coroutines(256) { ...@@ -659,6 +662,34 @@ interpreter::interpreter(duel* pd): coroutines(256) {
load_script((char*) "./script/constant.lua"); load_script((char*) "./script/constant.lua");
load_script((char*) "./script/utility.lua"); load_script((char*) "./script/utility.lua");
//load kpro constant //load kpro constant
//card data constants
lua_pushinteger(lua_state, CARDDATA_CODE);
lua_setglobal(lua_state, "CARDDATA_CODE");
lua_pushinteger(lua_state, CARDDATA_ALIAS);
lua_setglobal(lua_state, "CARDDATA_ALIAS");
lua_pushinteger(lua_state, CARDDATA_SETCODE);
lua_setglobal(lua_state, "CARDDATA_SETCODE");
lua_pushinteger(lua_state, CARDDATA_TYPE);
lua_setglobal(lua_state, "CARDDATA_TYPE");
lua_pushinteger(lua_state, CARDDATA_LEVEL);
lua_setglobal(lua_state, "CARDDATA_LEVEL");
lua_pushinteger(lua_state, CARDDATA_ATTRIBUTE);
lua_setglobal(lua_state, "CARDDATA_ATTRIBUTE");
lua_pushinteger(lua_state, CARDDATA_ATTRIBUTE);
lua_setglobal(lua_state, "CARDDATA_ATTRIBUTE");
lua_pushinteger(lua_state, CARDDATA_RACE);
lua_setglobal(lua_state, "CARDDATA_RACE");
lua_pushinteger(lua_state, CARDDATA_ATTACK);
lua_setglobal(lua_state, "CARDDATA_ATTACK");
lua_pushinteger(lua_state, CARDDATA_DEFENSE);
lua_setglobal(lua_state, "CARDDATA_DEFENSE");
lua_pushinteger(lua_state, CARDDATA_LSCALE);
lua_setglobal(lua_state, "CARDDATA_LSCALE");
lua_pushinteger(lua_state, CARDDATA_RSCALE);
lua_setglobal(lua_state, "CARDDATA_RSCALE");
lua_pushinteger(lua_state, CARDDATA_LINK_MARKER);
lua_setglobal(lua_state, "CARDDATA_LINK_MARKER");
//effects
lua_pushinteger(lua_state, EFFECT_CHANGE_LINK_MARKER_KOISHI); lua_pushinteger(lua_state, EFFECT_CHANGE_LINK_MARKER_KOISHI);
lua_setglobal(lua_state, "EFFECT_CHANGE_LINK_MARKER_KOISHI"); lua_setglobal(lua_state, "EFFECT_CHANGE_LINK_MARKER_KOISHI");
lua_pushinteger(lua_state, EFFECT_ADD_LINK_MARKER_KOISHI); lua_pushinteger(lua_state, EFFECT_ADD_LINK_MARKER_KOISHI);
...@@ -667,6 +698,7 @@ interpreter::interpreter(duel* pd): coroutines(256) { ...@@ -667,6 +698,7 @@ interpreter::interpreter(duel* pd): coroutines(256) {
lua_setglobal(lua_state, "EFFECT_REMOVE_LINK_MARKER_KOISHI"); lua_setglobal(lua_state, "EFFECT_REMOVE_LINK_MARKER_KOISHI");
lua_pushinteger(lua_state, EFFECT_CANNOT_LOSE_KOISHI); lua_pushinteger(lua_state, EFFECT_CANNOT_LOSE_KOISHI);
lua_setglobal(lua_state, "EFFECT_CANNOT_LOSE_KOISHI"); lua_setglobal(lua_state, "EFFECT_CANNOT_LOSE_KOISHI");
//music hints
lua_pushinteger(lua_state, HINT_MUSIC); lua_pushinteger(lua_state, HINT_MUSIC);
lua_setglobal(lua_state, "HINT_MUSIC"); lua_setglobal(lua_state, "HINT_MUSIC");
lua_pushinteger(lua_state, HINT_SOUND); lua_pushinteger(lua_state, HINT_SOUND);
......
...@@ -44,40 +44,40 @@ int32 scriptlib::card_set_card_data(lua_State *L) { ...@@ -44,40 +44,40 @@ int32 scriptlib::card_set_card_data(lua_State *L) {
card* pcard = *(card**) lua_touserdata(L, 1); card* pcard = *(card**) lua_touserdata(L, 1);
int32 stype = lua_tonumberint(L, 2); int32 stype = lua_tonumberint(L, 2);
switch(stype) { switch(stype) {
case ASSUME_CODE: case CARDDATA_CODE:
pcard->data.code = lua_tonumberint(L, 3); pcard->data.code = lua_tonumberint(L, 3);
break; break;
case ASSUME_TYPE: case CARDDATA_ALIAS:
pcard->data.type = lua_tonumberint(L, 3); pcard->data.alias = lua_tonumberint(L, 3);
break; break;
case ASSUME_LEVEL: case CARDDATA_SETCODE:
pcard->data.level = lua_tonumberint(L, 3); pcard->data.setcode = lua_tonumberint(L, 3);
break;
case CARDDATA_TYPE:
pcard->data.type = lua_tonumberint(L, 3);
break; break;
case ASSUME_RANK: case CARDDATA_LEVEL:
pcard->data.level = lua_tonumberint(L, 3); pcard->data.level = lua_tonumberint(L, 3);
break; break;
case ASSUME_ATTRIBUTE: case CARDDATA_ATTRIBUTE:
pcard->data.attribute = lua_tonumberint(L, 3); pcard->data.attribute = lua_tonumberint(L, 3);
break; break;
case ASSUME_RACE: case CARDDATA_RACE:
pcard->data.race = lua_tonumberint(L, 3); pcard->data.race = lua_tonumberint(L, 3);
break; break;
case ASSUME_ATTACK: case CARDDATA_ATTACK:
pcard->data.attack = lua_tonumberint(L, 3); pcard->data.attack = lua_tonumberint(L, 3);
break; break;
case ASSUME_DEFENSE: case CARDDATA_DEFENSE:
pcard->data.defense = lua_tonumberint(L, 3); pcard->data.defense = lua_tonumberint(L, 3);
break;
case 9:
pcard->data.alias = lua_tonumberint(L, 3);
break; break;
case 10: case CARDDATA_LSCALE:
pcard->data.lscale = lua_tonumberint(L, 3); pcard->data.lscale = lua_tonumberint(L, 3);
break; break;
case 11: case CARDDATA_RSCALE:
pcard->data.rscale = lua_tonumberint(L, 3); pcard->data.rscale = lua_tonumberint(L, 3);
break; break;
case 12: case CARDDATA_LINK_MARKER:
pcard->data.link_marker = lua_tonumberint(L, 3); pcard->data.link_marker = lua_tonumberint(L, 3);
break; break;
} }
...@@ -100,6 +100,30 @@ int32 scriptlib::card_get_origin_link_marker(lua_State *L) { ...@@ -100,6 +100,30 @@ int32 scriptlib::card_get_origin_link_marker(lua_State *L) {
lua_pushinteger(L, pcard->data.link_marker); lua_pushinteger(L, pcard->data.link_marker);
return 1; return 1;
} }
int32 scriptlib::card_is_xyz_summonable_by_rose(lua_State *L) {
check_param_count(L, 3);
check_param(L, PARAM_TYPE_CARD, 1);
check_param(L, PARAM_TYPE_CARD, 2);
check_param(L, PARAM_TYPE_CARD, 3);
card* pcard = *(card**) lua_touserdata(L, 1);
if(!(pcard->data.type & TYPE_XYZ))
return 0;
card* rcard = *(card**) lua_touserdata(L, 2);
card* mcard = *(card**) lua_touserdata(L, 3);
group* materials = pcard->pduel->new_group(rcard);
materials->container.insert(mcard);
uint32 p = pcard->pduel->game_field->core.reason_player;
pcard->pduel->game_field->core.limit_xyz = materials;
pcard->pduel->game_field->core.limit_xyz_minc = 2;
pcard->pduel->game_field->core.limit_xyz_maxc = 2;
pcard->pduel->game_field->rose_card = rcard;
pcard->pduel->game_field->rose_level = mcard->get_level();
int32 result = pcard->is_special_summonable(p, SUMMON_TYPE_XYZ);
pcard->pduel->game_field->rose_card = 0;
pcard->pduel->game_field->rose_level = 0;
lua_pushboolean(L, result);
return 1;
}
int32 scriptlib::card_get_code(lua_State *L) { int32 scriptlib::card_get_code(lua_State *L) {
check_param_count(L, 1); check_param_count(L, 1);
......
...@@ -113,40 +113,40 @@ int32 scriptlib::duel_read_card(lua_State *L) { ...@@ -113,40 +113,40 @@ int32 scriptlib::duel_read_card(lua_State *L) {
for(uint32 i = 0; i < args; ++i) { for(uint32 i = 0; i < args; ++i) {
int32 flag = lua_tonumberint(L, 2 + i); int32 flag = lua_tonumberint(L, 2 + i);
switch(flag) { switch(flag) {
case 1: case CARDDATA_CODE:
lua_pushinteger(L, dat.code); lua_pushinteger(L, dat.code);
break; break;
case 2: case CARDDATA_ALIAS:
lua_pushinteger(L, dat.alias); lua_pushinteger(L, dat.alias);
break; break;
case 3: case CARDDATA_SETCODE:
lua_pushinteger(L, dat.setcode); lua_pushinteger(L, dat.setcode);
break; break;
case 4: case CARDDATA_TYPE:
lua_pushinteger(L, dat.type); lua_pushinteger(L, dat.type);
break; break;
case 5: case CARDDATA_LEVEL:
lua_pushinteger(L, dat.level); lua_pushinteger(L, dat.level);
break; break;
case 6: case CARDDATA_ATTRIBUTE:
lua_pushinteger(L, dat.attribute); lua_pushinteger(L, dat.attribute);
break; break;
case 7: case CARDDATA_RACE:
lua_pushinteger(L, dat.race); lua_pushinteger(L, dat.race);
break; break;
case 8: case CARDDATA_ATTACK:
lua_pushinteger(L, dat.attack); lua_pushinteger(L, dat.attack);
break; break;
case 9: case CARDDATA_DEFENSE:
lua_pushinteger(L, dat.defense); lua_pushinteger(L, dat.defense);
break; break;
case 10: case CARDDATA_LSCALE:
lua_pushinteger(L, dat.lscale); lua_pushinteger(L, dat.lscale);
break; break;
case 11: case CARDDATA_RSCALE:
lua_pushinteger(L, dat.rscale); lua_pushinteger(L, dat.rscale);
break; break;
case 12: case CARDDATA_LINK_MARKER:
lua_pushinteger(L, dat.link_marker); lua_pushinteger(L, dat.link_marker);
break; break;
default: default:
...@@ -204,6 +204,46 @@ int32 scriptlib::duel_move_turn_count(lua_State *L) { ...@@ -204,6 +204,46 @@ int32 scriptlib::duel_move_turn_count(lua_State *L) {
pduel->write_buffer8(turn_player | 0x2); pduel->write_buffer8(turn_player | 0x2);
return 0; return 0;
} }
int32 scriptlib::duel_get_cards_in_zone(lua_State *L) {
check_param_count(L, 2);
uint32 rplayer = lua_tonumberint(L, 1);
if(rplayer != 0 && rplayer != 1)
return 0;
uint32 zone = lua_tonumberint(L, 2);
duel* pduel = interpreter::get_duel_info(L);
field::card_set cset;
pduel->game_field->get_cards_in_zone(&cset, zone, rplayer, LOCATION_MZONE);
pduel->game_field->get_cards_in_zone(&cset, zone, rplayer, LOCATION_SZONE);
pduel->game_field->get_cards_in_zone(&cset, zone >> 16, 1 - rplayer, LOCATION_MZONE);
pduel->game_field->get_cards_in_zone(&cset, zone >> 16, 1 - rplayer, LOCATION_SZONE);
group* pgroup = pduel->new_group(cset);
interpreter::group2value(L, pgroup);
return 1;
}
int32 scriptlib::duel_xyz_summon_by_rose(lua_State *L) {
check_action_permission(L);
check_param_count(L, 4);
check_param(L, PARAM_TYPE_CARD, 2);
check_param(L, PARAM_TYPE_CARD, 3);
check_param(L, PARAM_TYPE_CARD, 4);
uint32 playerid = lua_tonumberint(L, 1);
if(playerid != 0 && playerid != 1)
return 0;
card* pcard = *(card**)lua_touserdata(L, 2);
card* rcard = *(card**) lua_touserdata(L, 3);
card* mcard = *(card**) lua_touserdata(L, 4);
duel* pduel = pcard->pduel;
group* materials = pduel->new_group(rcard);
materials->container.insert(mcard);
pduel->game_field->core.limit_xyz = materials;
pduel->game_field->core.limit_xyz_minc = 0;
pduel->game_field->core.limit_xyz_maxc = 0;
pduel->game_field->core.summon_cancelable = FALSE;
pduel->game_field->rose_card = rcard;
pduel->game_field->rose_level = mcard->get_level();
pduel->game_field->special_summon_rule(playerid, pcard, SUMMON_TYPE_XYZ);
return lua_yield(L, 0);
}
int32 scriptlib::duel_enable_global_flag(lua_State *L) { int32 scriptlib::duel_enable_global_flag(lua_State *L) {
check_param_count(L, 1); check_param_count(L, 1);
......
...@@ -2570,7 +2570,12 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin ...@@ -2570,7 +2570,12 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
if(proc->value == SUMMON_TYPE_SYNCHRO) if(proc->value == SUMMON_TYPE_SYNCHRO)
matreason = REASON_SYNCHRO; matreason = REASON_SYNCHRO;
else if(proc->value == SUMMON_TYPE_XYZ) else if(proc->value == SUMMON_TYPE_XYZ)
{
matreason = REASON_XYZ; matreason = REASON_XYZ;
//modded - rose xyz summon
pduel->game_field->rose_card = 0;
pduel->game_field->rose_level = 0;
}
else if(proc->value == SUMMON_TYPE_LINK) else if(proc->value == SUMMON_TYPE_LINK)
matreason = REASON_LINK; matreason = REASON_LINK;
if (target->material_cards.size()) { if (target->material_cards.size()) {
......
...@@ -28,6 +28,7 @@ public: ...@@ -28,6 +28,7 @@ public:
static int32 card_set_card_data(lua_State *L); static int32 card_set_card_data(lua_State *L);
static int32 card_get_link_marker(lua_State *L); static int32 card_get_link_marker(lua_State *L);
static int32 card_get_origin_link_marker(lua_State *L); static int32 card_get_origin_link_marker(lua_State *L);
static int32 card_is_xyz_summonable_by_rose(lua_State *L);
static int32 effect_set_owner(lua_State *L); static int32 effect_set_owner(lua_State *L);
static int32 effect_get_range(lua_State *L); static int32 effect_get_range(lua_State *L);
static int32 effect_get_count_limit(lua_State *L); static int32 effect_get_count_limit(lua_State *L);
...@@ -38,6 +39,8 @@ public: ...@@ -38,6 +39,8 @@ public:
static int32 duel_disable_action_check(lua_State *L); static int32 duel_disable_action_check(lua_State *L);
static int32 duel_setmetatable(lua_State *L); static int32 duel_setmetatable(lua_State *L);
static int32 duel_move_turn_count(lua_State *L); static int32 duel_move_turn_count(lua_State *L);
static int32 duel_get_cards_in_zone(lua_State *L);
static int32 duel_xyz_summon_by_rose(lua_State *L);
//metatable //metatable
static int32 group_meta_add(lua_State *L); static int32 group_meta_add(lua_State *L);
static int32 group_meta_sub(lua_State *L); static int32 group_meta_sub(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