Commit 41a08a03 authored by nanahira's avatar nanahira

add EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI

parent 6866f7cb
......@@ -114,6 +114,7 @@ public:
#define EFFECT_REMOVE_LINK_MARKER_KOISHI 37564152
#define EFFECT_CANNOT_LOSE_KOISHI 37564153
#define EFFECT_EXTRA_TOMAIN_KOISHI 37564154
#define EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI 37564155
//status
#define EFFECT_STATUS_AVAILABLE 0x0001
......
......@@ -3234,13 +3234,32 @@ int32 field::is_player_can_remove_counter(uint8 playerid, card * pcard, uint8 s,
return FALSE;
}
int32 field::is_player_can_remove_overlay_card(uint8 playerid, card * pcard, uint8 s, uint8 o, uint16 min, uint32 reason) {
if((pcard && pcard->xyz_materials.size() >= min) || (!pcard && get_overlay_count(playerid, s, o) >= min))
int32 minc = min;
effect_set eset;
filter_player_effect(playerid, EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI, &eset);
for(int32 i = 0; i < eset.size(); ++i) {
pduel->lua->add_param(core.reason_effect, PARAM_TYPE_EFFECT);
pduel->lua->add_param(playerid, PARAM_TYPE_INT);
pduel->lua->add_param(minc, PARAM_TYPE_INT);
pduel->lua->add_param(reason, PARAM_TYPE_INT);
int32 param_count;
if(pcard) {
pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
param_count = 5;
} else {
pduel->lua->add_param(s, PARAM_TYPE_INT);
pduel->lua->add_param(o, PARAM_TYPE_INT);
param_count = 6;
}
minc = eset[i]->get_value(param_count);
}
if((pcard && pcard->xyz_materials.size() >= minc) || (!pcard && get_overlay_count(playerid, s, o) >= minc))
return TRUE;
auto pr = effects.continuous_effect.equal_range(EFFECT_OVERLAY_REMOVE_REPLACE);
tevent e;
e.event_cards = 0;
e.event_player = playerid;
e.event_value = min;
e.event_value = minc;
e.reason = reason;
e.reason_effect = core.reason_effect;
e.reason_player = playerid;
......
......@@ -698,6 +698,8 @@ interpreter::interpreter(duel* pd): coroutines(256) {
lua_setglobal(lua_state, "EFFECT_CANNOT_LOSE_KOISHI");
lua_pushinteger(lua_state, EFFECT_EXTRA_TOMAIN_KOISHI);
lua_setglobal(lua_state, "EFFECT_EXTRA_TOMAIN_KOISHI");
lua_pushinteger(lua_state, EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI);
lua_setglobal(lua_state, "EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI");
//music hints
lua_pushinteger(lua_state, HINT_MUSIC);
lua_setglobal(lua_state, "HINT_MUSIC");
......
......@@ -758,7 +758,27 @@ int32 field::remove_overlay_card(uint16 step, uint32 reason, card* pcard, uint8
case 0: {
core.select_options.clear();
core.select_effects.clear();
if((pcard && pcard->xyz_materials.size() >= min) || (!pcard && get_overlay_count(rplayer, s, o) >= min)) {
int32 minc = min;
effect_set eset;
filter_player_effect(rplayer, EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI, &eset);
for(int32 i = 0; i < eset.size(); ++i) {
pduel->lua->add_param(core.reason_effect, PARAM_TYPE_EFFECT);
pduel->lua->add_param(rplayer, PARAM_TYPE_INT);
pduel->lua->add_param(minc, PARAM_TYPE_INT);
pduel->lua->add_param(reason, PARAM_TYPE_INT);
int32 param_count;
if(pcard) {
pduel->lua->add_param(pcard, PARAM_TYPE_CARD);
param_count = 5;
} else {
pduel->lua->add_param(s, PARAM_TYPE_INT);
pduel->lua->add_param(o, PARAM_TYPE_INT);
param_count = 6;
}
minc = eset[i]->get_value(param_count);
}
core.units.begin()->arg2 = (max << 16) + minc;
if((pcard && pcard->xyz_materials.size() >= minc) || (!pcard && get_overlay_count(rplayer, s, o) >= minc)) {
core.select_options.push_back(12);
core.select_effects.push_back(0);
}
......@@ -766,7 +786,7 @@ int32 field::remove_overlay_card(uint16 step, uint32 reason, card* pcard, uint8
tevent e;
e.event_cards = 0;
e.event_player = rplayer;
e.event_value = min;
e.event_value = minc;
e.reason = reason;
e.reason_effect = core.reason_effect;
e.reason_player = rplayer;
......
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