diff --git a/field.h b/field.h index a80c8b323..2429a438f 100644 --- a/field.h +++ b/field.h @@ -303,6 +303,7 @@ struct processor { int32 summon_count[2]{}; uint8 extra_summon[2]{}; int32 spe_effect[2]{}; + int32 last_select_hint[2]{ 0 }; int32 duel_options{ 0 }; int32 duel_rule{ CURRENT_RULE }; //current rule: 5, Master Rule 2020 uint32 copy_reset{ 0 }; diff --git a/libduel.cpp b/libduel.cpp index dadfbd7f0..2e4731247 100644 --- a/libduel.cpp +++ b/libduel.cpp @@ -3701,12 +3701,24 @@ int32 scriptlib::duel_hint(lua_State * L) { if(htype == HINT_OPSELECTED) playerid = 1 - playerid; duel* pduel = interpreter::get_duel_info(L); + if(htype == HINT_SELECTMSG) + pduel->game_field->core.last_select_hint[playerid] = desc; pduel->write_buffer8(MSG_HINT); pduel->write_buffer8(htype); pduel->write_buffer8(playerid); pduel->write_buffer32(desc); return 0; } +int32 scriptlib::duel_get_last_select_hint(lua_State* L) { + duel* pduel = interpreter::get_duel_info(L); + uint8 playerid = pduel->game_field->core.reason_player; + if(lua_gettop(L) >= 1) + playerid = (uint8)lua_tointeger(L, 1); + if(playerid != 0 && playerid != 1) + return 0; + lua_pushinteger(L, pduel->game_field->core.last_select_hint[playerid]); + return 1; +} int32 scriptlib::duel_hint_selection(lua_State *L) { check_param_count(L, 1); check_param(L, PARAM_TYPE_GROUP, 1); @@ -4961,6 +4973,7 @@ static const struct luaL_Reg duellib[] = { { "CheckRemoveOverlayCard", scriptlib::duel_check_remove_overlay_card }, { "RemoveOverlayCard", scriptlib::duel_remove_overlay_card }, { "Hint", scriptlib::duel_hint }, + { "GetLastSelectHint", scriptlib::duel_get_last_select_hint }, { "HintSelection", scriptlib::duel_hint_selection }, { "SelectEffectYesNo", scriptlib::duel_select_effect_yesno }, { "SelectYesNo", scriptlib::duel_select_yesno }, diff --git a/scriptlib.h b/scriptlib.h index e24a19a7e..4cadb6c22 100644 --- a/scriptlib.h +++ b/scriptlib.h @@ -569,6 +569,7 @@ class scriptlib { static int32 duel_remove_overlay_card(lua_State *L); static int32 duel_hint(lua_State *L); + static int32 duel_get_last_select_hint(lua_State *L); static int32 duel_hint_selection(lua_State *L); static int32 duel_select_effect_yesno(lua_State *L); static int32 duel_select_yesno(lua_State *L);