Commit c7be3030 authored by Vury Leo's avatar Vury Leo

performance trune for tg cyber magician

parent c0e3f945
...@@ -3640,6 +3640,8 @@ end ...@@ -3640,6 +3640,8 @@ end
function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_level,tuner_filter,non_tuner_race,non_tuner_level,non_tuner_filter,tc, function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_level,tuner_filter,non_tuner_race,non_tuner_level,non_tuner_filter,tc,
tuner_min,tuner_max,non_tuner_min,non_tuner_max,level_mapper,hand_count_mapper,scheck,sgoalcheck,selected,index,state,prune_indexes) tuner_min,tuner_max,non_tuner_min,non_tuner_max,level_mapper,hand_count_mapper,scheck,sgoalcheck,selected,index,state,prune_indexes)
dfs_calls = dfs_calls + 1
if state.tuner_count>tuner_max then return false end if state.tuner_count>tuner_max then return false end
if state.non_tuner_count>non_tuner_max then return false end if state.non_tuner_count>non_tuner_max then return false end
...@@ -3747,6 +3749,7 @@ function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_l ...@@ -3747,6 +3749,7 @@ function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_l
local branch_state=Synchro.ApplyVariantState( local branch_state=Synchro.ApplyVariantState(
state,mc,diff,tuner_race,tuner_level,prune_tuner_filter,non_tuner_race,non_tuner_level,prune_non_tuner_filter,tc,prune_level,append_material_limit_filter state,mc,diff,tuner_race,tuner_level,prune_tuner_filter,non_tuner_race,non_tuner_level,prune_non_tuner_filter,tc,prune_level,append_material_limit_filter
) )
if branch_state~=nil then
table.insert(selected,mc) table.insert(selected,mc)
if Synchro.CanCompleteSelection( if Synchro.CanCompleteSelection(
candidates,target_level, candidates,target_level,
...@@ -3762,6 +3765,7 @@ function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_l ...@@ -3762,6 +3765,7 @@ function Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_l
table.remove(selected) table.remove(selected)
end end
end end
end
-- exclude branch -- exclude branch
if Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_level,tuner_filter,non_tuner_race,non_tuner_level,non_tuner_filter,tc, if Synchro.CanCompleteSelection(candidates,target_level,tuner_race,tuner_level,tuner_filter,non_tuner_race,non_tuner_level,non_tuner_filter,tc,
...@@ -4262,11 +4266,13 @@ function Synchro.BuildStatesFromSelection(selection,tuner_race,tuner_level,tuner ...@@ -4262,11 +4266,13 @@ function Synchro.BuildStatesFromSelection(selection,tuner_race,tuner_level,tuner
st,card,selected,tc,tuner_race,tuner_level,tuner_filter,non_tuner_race,non_tuner_level,non_tuner_filter st,card,selected,tc,tuner_race,tuner_level,tuner_filter,non_tuner_race,non_tuner_level,non_tuner_filter
)) do )) do
-- merge diff into full state -- merge diff into full state
local new_state = Synchro.ApplyVariantState( local new_state=Synchro.ApplyVariantState(
st,card,diff,tuner_race,tuner_level,tuner_filter,non_tuner_race,non_tuner_level,non_tuner_filter,tc,prune_level,append_material_limit_filter st,card,diff,tuner_race,tuner_level,tuner_filter,non_tuner_race,non_tuner_level,non_tuner_filter,tc,prune_level,append_material_limit_filter
) )
if new_state~=nil then
table.insert(next_states,new_state) table.insert(next_states,new_state)
end end
end
end end
table.insert(selected,card) table.insert(selected,card)
...@@ -4517,8 +4523,18 @@ function Synchro.ApplyVariantState(st,card,diff,tuner_race,tuner_level,tuner_fil ...@@ -4517,8 +4523,18 @@ function Synchro.ApplyVariantState(st,card,diff,tuner_race,tuner_level,tuner_fil
if append_material_limit_filter~=nil then if append_material_limit_filter~=nil then
new_material_limit_filter=aux.AND(append_material_limit_filter,st.material_limit_filter) new_material_limit_filter=aux.AND(append_material_limit_filter,st.material_limit_filter)
end end
local new_possible_sums=diff.possible_sums or possible_sums
--- return nil if new_possible_sums has zero valid sum
local empty=true
for k,v in pairs(new_possible_sums) do
empty=false
break
end
if empty then
return nil
end
return { return {
possible_sums=diff.possible_sums or possible_sums, possible_sums=new_possible_sums,
tuner_count=st.tuner_count+tuner_inc, tuner_count=st.tuner_count+tuner_inc,
non_tuner_count=st.non_tuner_count+non_tuner_inc, non_tuner_count=st.non_tuner_count+non_tuner_inc,
level_mapper=diff.level_mapper or st.level_mapper, level_mapper=diff.level_mapper or st.level_mapper,
......
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