Commit 9dafd063 authored by fallenstardust's avatar fallenstardust

sync ocgcore

parent 958d5ef6
...@@ -40,6 +40,7 @@ interpreter::interpreter(duel* pd): coroutines(256) { ...@@ -40,6 +40,7 @@ interpreter::interpreter(duel* pd): coroutines(256) {
//extra scripts //extra scripts
load_script("./script/constant.lua"); load_script("./script/constant.lua");
load_script("./script/utility.lua"); load_script("./script/utility.lua");
load_script("./script/procedure.lua");
} }
interpreter::~interpreter() { interpreter::~interpreter() {
lua_close(lua_state); lua_close(lua_state);
......
...@@ -613,10 +613,13 @@ int32 scriptlib::duel_sendto_hand(lua_State *L) { ...@@ -613,10 +613,13 @@ int32 scriptlib::duel_sendto_hand(lua_State *L) {
if(lua_isnil(L, 2) || (playerid != 0 && playerid != 1)) if(lua_isnil(L, 2) || (playerid != 0 && playerid != 1))
playerid = PLAYER_NONE; playerid = PLAYER_NONE;
uint32 reason = (uint32)lua_tointeger(L, 3); uint32 reason = (uint32)lua_tointeger(L, 3);
uint32 reason_player = pduel->game_field->core.reason_player;
if (lua_gettop(L) >= 4)
reason_player = (uint32)lua_tointeger(L, 4);
if(pcard) if(pcard)
pduel->game_field->send_to(pcard, pduel->game_field->core.reason_effect, reason, pduel->game_field->core.reason_player, playerid, LOCATION_HAND, 0, POS_FACEUP); pduel->game_field->send_to(pcard, pduel->game_field->core.reason_effect, reason, reason_player, playerid, LOCATION_HAND, 0, POS_FACEUP);
else else
pduel->game_field->send_to(&(pgroup->container), pduel->game_field->core.reason_effect, reason, pduel->game_field->core.reason_player, playerid, LOCATION_HAND, 0, POS_FACEUP); pduel->game_field->send_to(&(pgroup->container), pduel->game_field->core.reason_effect, reason, reason_player, playerid, LOCATION_HAND, 0, POS_FACEUP);
return lua_yieldk(L, 0, (lua_KContext)pduel, [](lua_State *L, int32 status, lua_KContext ctx) { return lua_yieldk(L, 0, (lua_KContext)pduel, [](lua_State *L, int32 status, lua_KContext ctx) {
duel* pduel = (duel*)ctx; duel* pduel = (duel*)ctx;
lua_pushinteger(L, pduel->game_field->returns.ivalue[0]); lua_pushinteger(L, pduel->game_field->returns.ivalue[0]);
......
...@@ -500,6 +500,19 @@ int32 field::damage(uint16 step, effect* reason_effect, uint32 reason, uint8 rea ...@@ -500,6 +500,19 @@ int32 field::damage(uint16 step, effect* reason_effect, uint32 reason, uint8 rea
if(val == 0) if(val == 0)
return TRUE; return TRUE;
} }
eset.clear();
filter_player_effect(playerid, EFFECT_REPLACE_DAMAGE, &eset);
for (int32 i = 0; i < eset.size(); ++i) {
pduel->lua->add_param(reason_effect, PARAM_TYPE_EFFECT);
pduel->lua->add_param(val, PARAM_TYPE_INT);
pduel->lua->add_param(reason, PARAM_TYPE_INT);
pduel->lua->add_param(reason_player, PARAM_TYPE_INT);
pduel->lua->add_param(reason_card, PARAM_TYPE_CARD);
val = eset[i]->get_value(5);
returns.ivalue[0] = val;
if (val == 0)
return TRUE;
}
core.units.begin()->arg3 = val; core.units.begin()->arg3 = val;
if(is_step) { if(is_step) {
core.units.begin()->step = 9; core.units.begin()->step = 9;
......
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