Commit bae4dae8 authored by nanahira's avatar nanahira

Merge branch 'koishibuild' of https://github.com/purerosefallen/ygopro-7210srv into koishibuild

parents ee1cac72 5f2feb70
version: '{build}' version: '{build}'
skip_tags: true
install: install:
- git submodule update --init --recursive - git submodule update --init --recursive
...@@ -56,9 +55,14 @@ after_build: ...@@ -56,9 +55,14 @@ after_build:
- mv -f irrklang\bin\win32-visualStudio\irrKlang.dll . - mv -f irrklang\bin\win32-visualStudio\irrKlang.dll .
- mv -f irrklang\bin\win32-visualStudio\ikpMP3.dll . - mv -f irrklang\bin\win32-visualStudio\ikpMP3.dll .
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/Fluorohydride/ygopro-scripts/archive/master.zip ; exit 0" - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/Smile-DK/ygopro-scripts/archive/master.zip ; exit 0"
- 7z x ygopro-scripts-master.zip - 7z x ygopro-scripts-master.zip
- mv -f ygopro-scripts-master script - mv -f ygopro-scripts-master script
- rm -rf ygopro-scripts-master.zip
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/Fluorohydride/ygopro-scripts/archive/master.zip ; exit 0"
- 7z x ygopro-scripts-master.zip
- cp -rf ygopro-scripts-master/*.lua script
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/HuangYuNan/ygopro222-images/archive/master.zip ; exit 0" - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/HuangYuNan/ygopro222-images/archive/master.zip ; exit 0"
- 7z x ygopro222-images-master.zip - 7z x ygopro222-images-master.zip
......
...@@ -28,7 +28,10 @@ int32 field::select_battle_command(uint16 step, uint8 playerid) { ...@@ -28,7 +28,10 @@ int32 field::select_battle_command(uint16 step, uint8 playerid) {
for(i = 0; i < core.select_chains.size(); ++i) { for(i = 0; i < core.select_chains.size(); ++i) {
peffect = core.select_chains[i].triggering_effect; peffect = core.select_chains[i].triggering_effect;
pcard = peffect->get_handler(); pcard = peffect->get_handler();
pduel->write_buffer32(pcard->data.code); if(!peffect->is_flag(EFFECT_FLAG_FIELD_ONLY))
pduel->write_buffer32(pcard->data.code);
else
pduel->write_buffer32(pcard->data.code | 0x80000000);
pduel->write_buffer8(pcard->current.controler); pduel->write_buffer8(pcard->current.controler);
pduel->write_buffer8(pcard->current.location); pduel->write_buffer8(pcard->current.location);
pduel->write_buffer8(pcard->current.sequence); pduel->write_buffer8(pcard->current.sequence);
...@@ -126,7 +129,10 @@ int32 field::select_idle_command(uint16 step, uint8 playerid) { ...@@ -126,7 +129,10 @@ int32 field::select_idle_command(uint16 step, uint8 playerid) {
for(i = 0; i < core.select_chains.size(); ++i) { for(i = 0; i < core.select_chains.size(); ++i) {
peffect = core.select_chains[i].triggering_effect; peffect = core.select_chains[i].triggering_effect;
pcard = peffect->get_handler(); pcard = peffect->get_handler();
pduel->write_buffer32(pcard->data.code); if(!peffect->is_flag(EFFECT_FLAG_FIELD_ONLY))
pduel->write_buffer32(pcard->data.code);
else
pduel->write_buffer32(pcard->data.code | 0x80000000);
pduel->write_buffer8(pcard->current.controler); pduel->write_buffer8(pcard->current.controler);
pduel->write_buffer8(pcard->current.location); pduel->write_buffer8(pcard->current.location);
pduel->write_buffer8(pcard->current.sequence); pduel->write_buffer8(pcard->current.sequence);
......
...@@ -1371,9 +1371,8 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1371,9 +1371,8 @@ int32 field::process_phase_event(int16 step, int32 phase) {
tf_count++; tf_count++;
} }
pr = effects.continuous_effect.equal_range(phase_event); pr = effects.continuous_effect.equal_range(phase_event);
for(; pr.first != pr.second;) { for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second; peffect = pr.first->second;
++pr.first;
if(peffect->get_handler_player() != check_player || !peffect->is_activateable(check_player, nil_event)) if(peffect->get_handler_player() != check_player || !peffect->is_activateable(check_player, nil_event))
continue; continue;
peffect->id = infos.field_id++; peffect->id = infos.field_id++;
...@@ -1457,6 +1456,16 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1457,6 +1456,16 @@ int32 field::process_phase_event(int16 step, int32 phase) {
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
fc_count++; fc_count++;
} }
pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second;
if(peffect->get_handler_player() != check_player || !peffect->is_activateable(check_player, nil_event))
continue;
peffect->id = infos.field_id++;
newchain.triggering_effect = peffect;
core.select_chains.push_back(newchain);
fc_count++;
}
} }
if(core.select_chains.size() == 0) { if(core.select_chains.size() == 0) {
returns.ivalue[0] = -1; returns.ivalue[0] = -1;
...@@ -1967,6 +1976,70 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free ...@@ -1967,6 +1976,70 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
core.units.begin()->step = 4; core.units.begin()->step = 4;
return FALSE; return FALSE;
} }
case 30: {
int32 check_player = infos.turn_player;
nil_event.event_code = EVENT_FREE_CHAIN;
chain newchain;
core.select_chains.clear();
core.spe_effect[check_player] = 0;
auto pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) {
effect* peffect = pr.first->second;
newchain.triggering_effect = peffect;
if(peffect->get_handler_player() == check_player && peffect->is_activateable(check_player, nil_event)) {
core.select_chains.push_back(newchain);
core.spe_effect[check_player]++;
}
}
if(!core.select_chains.empty())
add_process(PROCESSOR_SELECT_CHAIN, 0, 0, 0, check_player, core.spe_effect[check_player]);
else
core.units.begin()->step = 31;
return FALSE;
}
case 31: {
if(returns.ivalue[0] == -1)
return FALSE;
const chain& newchain = core.select_chains[returns.ivalue[0]];
effect* peffect = newchain.triggering_effect;
core.select_chains.clear();
core.sub_solving_event.push_back(nil_event);
add_process(PROCESSOR_SOLVE_CONTINUOUS, 0, peffect, 0, peffect->get_handler_player(), 0);
core.units.begin()->step = 29;
return FALSE;
}
case 32: {
int32 check_player = 1 - infos.turn_player;
nil_event.event_code = EVENT_FREE_CHAIN;
chain newchain;
core.select_chains.clear();
core.spe_effect[check_player] = 0;
auto pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) {
effect* peffect = pr.first->second;
newchain.triggering_effect = peffect;
if(peffect->get_handler_player() == check_player && peffect->is_activateable(check_player, nil_event)) {
core.select_chains.push_back(newchain);
core.spe_effect[check_player]++;
}
}
if(!core.select_chains.empty())
add_process(PROCESSOR_SELECT_CHAIN, 0, 0, 0, check_player, core.spe_effect[check_player]);
else
core.units.begin()->step = -1;
return FALSE;
}
case 33: {
if(returns.ivalue[0] == -1)
return FALSE;
const chain& newchain = core.select_chains[returns.ivalue[0]];
effect* peffect = newchain.triggering_effect;
core.select_chains.clear();
core.sub_solving_event.push_back(nil_event);
add_process(PROCESSOR_SOLVE_CONTINUOUS, 0, peffect, 0, peffect->get_handler_player(), 0);
core.units.begin()->step = 31;
return FALSE;
}
} }
return TRUE; return TRUE;
} }
...@@ -2518,6 +2591,13 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2518,6 +2591,13 @@ int32 field::process_idle_command(uint16 step) {
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, nil_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second;
newchain.triggering_effect = peffect;
if(peffect->get_handler_player() == infos.turn_player && peffect->is_activateable(infos.turn_player, nil_event))
core.select_chains.push_back(newchain);
}
for(auto eit = effects.ignition_effect.begin(); eit != effects.ignition_effect.end(); ++eit) { for(auto eit = effects.ignition_effect.begin(); eit != effects.ignition_effect.end(); ++eit) {
peffect = eit->second; peffect = eit->second;
peffect->set_activate_location(); peffect->set_activate_location();
...@@ -2589,6 +2669,13 @@ int32 field::process_idle_command(uint16 step) { ...@@ -2589,6 +2669,13 @@ int32 field::process_idle_command(uint16 step) {
if(ctype == 5) { if(ctype == 5) {
chain newchain = core.select_chains[sel]; chain newchain = core.select_chains[sel];
effect* peffect = newchain.triggering_effect; effect* peffect = newchain.triggering_effect;
if(peffect->type & EFFECT_TYPE_CONTINUOUS) {
core.select_chains.clear();
core.sub_solving_event.push_back(nil_event);
add_process(PROCESSOR_SOLVE_CONTINUOUS, 0, peffect, 0, peffect->get_handler_player(), 0);
core.units.begin()->step = -1;
return FALSE;
}
card* phandler = peffect->get_handler(); card* phandler = peffect->get_handler();
newchain.flag = 0; newchain.flag = 0;
newchain.chain_id = infos.field_id++; newchain.chain_id = infos.field_id++;
...@@ -2807,6 +2894,13 @@ int32 field::process_battle_command(uint16 step) { ...@@ -2807,6 +2894,13 @@ int32 field::process_battle_command(uint16 step) {
if(peffect->is_activateable(infos.turn_player, nil_event)) if(peffect->is_activateable(infos.turn_player, nil_event))
core.select_chains.push_back(newchain); core.select_chains.push_back(newchain);
} }
pr = effects.continuous_effect.equal_range(EVENT_FREE_CHAIN);
for(; pr.first != pr.second; ++pr.first) {
peffect = pr.first->second;
newchain.triggering_effect = peffect;
if(peffect->get_handler_player() == infos.turn_player && peffect->is_activateable(infos.turn_player, nil_event))
core.select_chains.push_back(newchain);
}
core.attackable_cards.clear(); core.attackable_cards.clear();
card_vector first_attack; card_vector first_attack;
card_vector must_attack; card_vector must_attack;
...@@ -2849,6 +2943,13 @@ int32 field::process_battle_command(uint16 step) { ...@@ -2849,6 +2943,13 @@ int32 field::process_battle_command(uint16 step) {
if(ctype == 0) { if(ctype == 0) {
chain newchain = core.select_chains[sel]; chain newchain = core.select_chains[sel];
effect* peffect = newchain.triggering_effect; effect* peffect = newchain.triggering_effect;
if(peffect->type & EFFECT_TYPE_CONTINUOUS) {
core.select_chains.clear();
core.sub_solving_event.push_back(nil_event);
add_process(PROCESSOR_SOLVE_CONTINUOUS, 0, peffect, 0, peffect->get_handler_player(), 0);
core.units.begin()->step = -1;
return FALSE;
}
card* phandler = peffect->get_handler(); card* phandler = peffect->get_handler();
newchain.flag = 0; newchain.flag = 0;
newchain.chain_id = infos.field_id++; newchain.chain_id = infos.field_id++;
...@@ -3081,7 +3182,7 @@ int32 field::process_battle_command(uint16 step) { ...@@ -3081,7 +3182,7 @@ int32 field::process_battle_command(uint16 step) {
pduel->write_buffer32(24); pduel->write_buffer32(24);
core.hint_timing[0] = TIMING_BATTLE_PHASE; core.hint_timing[0] = TIMING_BATTLE_PHASE;
core.hint_timing[1] = TIMING_BATTLE_PHASE; core.hint_timing[1] = TIMING_BATTLE_PHASE;
add_process(PROCESSOR_POINT_EVENT, 0, 0, 0, 0, 0); add_process(PROCESSOR_POINT_EVENT, 30, 0, 0, 0, 0);
return FALSE; return FALSE;
} }
case 10: { case 10: {
......
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