Commit 511db883 authored by salix5's avatar salix5

field::special_summon_step()

parent 0f19f8fc
......@@ -2182,7 +2182,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card * target, ui
raise_event(&target->material_cards, EVENT_BE_MATERIAL, proc, matreason, sumplayer, sumplayer, 0);
process_single_event();
process_instant_event();
return false;
return FALSE;
}
case 17: {
raise_single_event(target, 0, EVENT_SPSUMMON_SUCCESS, core.units.begin()->peffect, 0, sumplayer, sumplayer, 0);
......@@ -2416,6 +2416,7 @@ int32 field::special_summon_step(uint16 step, group * targets, card * target) {
returns.ivalue[0] = TRUE;
if(target->owner != target->current.controler)
set_control(target, target->current.controler, 0, 0);
target->set_status(STATUS_SUMMONING, TRUE);
return TRUE;
}
}
......@@ -2435,7 +2436,6 @@ int32 field::special_summon(uint16 step, effect * reason_effect, uint8 reason_pl
if(!cvs.empty()) {
if(cvs.size() > 1)
std::sort(cvs.begin(), cvs.end(), card::card_operation_sort);
//set_spsummon_counter(infos.turn_player);
core.hint_timing[infos.turn_player] |= TIMING_SPSUMMON;
for(auto cvit = cvs.begin(); cvit != cvs.end(); ++cvit)
add_process(PROCESSOR_SPSUMMON_STEP, 0, 0, targets, 0, (ptr)(*cvit));
......@@ -2443,7 +2443,6 @@ int32 field::special_summon(uint16 step, effect * reason_effect, uint8 reason_pl
if(!cvo.empty()) {
if(cvo.size() > 1)
std::sort(cvo.begin(), cvo.end(), card::card_operation_sort);
//set_spsummon_counter(1 - infos.turn_player);
core.hint_timing[1 - infos.turn_player] |= TIMING_SPSUMMON;
for(auto cvit = cvo.begin(); cvit != cvo.end(); ++cvit)
add_process(PROCESSOR_SPSUMMON_STEP, 0, 0, targets, 0, (ptr)(*cvit));
......@@ -2476,6 +2475,7 @@ int32 field::special_summon(uint16 step, effect * reason_effect, uint8 reason_pl
for(auto cit = spsummon_once_set[1].begin(); cit != spsummon_once_set[1].end(); ++cit)
core.spsummon_once_map[1][*cit]++;
for(auto cit = targets->container.begin(); cit != targets->container.end(); ++cit) {
(*cit)->set_status(STATUS_SUMMONING, FALSE);
(*cit)->set_status(STATUS_SUMMON_TURN, TRUE);
if((*cit)->is_position(POS_FACEUP))
(*cit)->enable_field_effect(TRUE);
......
......@@ -4632,20 +4632,6 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
raise_event((card*)0, EVENT_CHAIN_NEGATED, peffect, 0, cait->triggering_player, cait->triggering_player, cait->chain_count);
process_instant_event();
core.units.begin()->step = 9;
/*if(cait->opinfos.count(0x200)) {
set_spsummon_counter(cait->triggering_player, false);
if((core.global_flag & GLOBALFLAG_SPSUMMON_ONCE) && (peffect->flag & EFFECT_FLAG_CARD_TARGET)) {
auto& optarget = cait->opinfos[0x200];
if(optarget.op_cards) {
for(auto opit = optarget.op_cards->container.begin(); opit != optarget.op_cards->container.end(); ++opit) {
if((*opit)->spsummon_code) {
uint8 sumpl = optarget.op_player ? 1 : 0;
core.spsummon_once_map[sumpl][(*opit)->spsummon_code]--;
}
}
}
}
}*/
return FALSE;
}
for(auto oeit = effects.oath.begin(); oeit != effects.oath.end(); ++oeit)
......@@ -4687,7 +4673,6 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
return FALSE;
}
}
//core.units.begin()->arg2 = core.spsummon_state_count[cait->triggering_player];
if(cait->replace_op) {
core.units.begin()->peffect = (effect*)(size_t)cait->triggering_effect->operation;
cait->triggering_effect->operation = cait->replace_op;
......@@ -4703,25 +4688,7 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
effect* peffect = cait->triggering_effect;
if(core.units.begin()->peffect) {
peffect->operation = (ptr)core.units.begin()->peffect;
/*if(cait->opinfos.count(0x200)) {
set_spsummon_counter(cait->triggering_player,false);
if((core.global_flag & GLOBALFLAG_SPSUMMON_ONCE) && (peffect->flag & EFFECT_FLAG_CARD_TARGET)) {
auto& optarget = cait->opinfos[0x200];
if(optarget.op_cards) {
for(auto opit = optarget.op_cards->container.begin(); opit != optarget.op_cards->container.end(); ++opit) {
if((*opit)->spsummon_code) {
uint8 sumpl = optarget.op_player ? 1 : 0;
core.spsummon_once_map[sumpl][(*opit)->spsummon_code]--;
}
}
}
}
}*/
}
/*else {
if(cait->opinfos.count(0x200) && (core.units.begin()->arg2 != core.spsummon_state_count[cait->triggering_player]))
set_spsummon_counter(cait->triggering_player, false);
}*/
core.special_summoning.clear();
core.equiping_cards.clear();
return FALSE;
......
......@@ -34,14 +34,15 @@ function c85431040.operation(e,tp,eg,ep,ev,re,r,rp)
local sg=g:Select(tp,1,ft,nil)
local tc=sg:GetFirst()
while tc do
Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK)
--cannot trigger
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_TRIGGER)
e1:SetRange(LOCATION_MZONE)
e1:SetReset(RESET_EVENT+0x1fe0000)
tc:RegisterEffect(e1)
if Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP_ATTACK) then
--cannot trigger
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_CANNOT_TRIGGER)
e1:SetRange(LOCATION_MZONE)
e1:SetReset(RESET_EVENT+0x1fe0000)
tc:RegisterEffect(e1)
end
tc=sg:GetNext()
end
Duel.SpecialSummonComplete()
......
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