Commit bafb8e1a authored by argon.sun's avatar argon.sun

new

parent 731ce36c
......@@ -2444,14 +2444,38 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int la = BufferIO::ReadInt8(pbuf);
int sa = BufferIO::ReadInt8(pbuf);
BufferIO::ReadInt8(pbuf);
int va = BufferIO::ReadInt32(pbuf);
int aatk = BufferIO::ReadInt32(pbuf);
int adef = BufferIO::ReadInt32(pbuf);
int da = BufferIO::ReadInt8(pbuf);
int cd = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
int ld = BufferIO::ReadInt8(pbuf);
int sd = BufferIO::ReadInt8(pbuf);
BufferIO::ReadInt8(pbuf);
int vd = BufferIO::ReadInt32(pbuf);
int datk = BufferIO::ReadInt32(pbuf);
int ddef = BufferIO::ReadInt32(pbuf);
int dd = BufferIO::ReadInt8(pbuf);
mainGame->gMutex.Lock();
ClientCard* pcard = mainGame->dField.GetCard(ca, la, sa);
if(aatk != pcard->attack) {
pcard->attack = aatk;
myswprintf(pcard->atkstring, L"%d", aatk);
}
if(adef != pcard->defence) {
pcard->defence = adef;
myswprintf(pcard->defstring, L"%d", adef);
}
if(ld) {
pcard = mainGame->dField.GetCard(cd, ld, sd);
if(datk != pcard->attack) {
pcard->attack = datk;
myswprintf(pcard->atkstring, L"%d", datk);
}
if(ddef != pcard->defence) {
pcard->defence = ddef;
myswprintf(pcard->defstring, L"%d", ddef);
}
}
mainGame->gMutex.Unlock();
return true;
}
case MSG_ATTACK_DISABLED: {
......
......@@ -547,7 +547,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
break;
}
case MSG_BATTLE: {
pbuf += 18;
pbuf += 26;
DuelClient::ClientAnalyze(offset, pbuf - offset);
pauseable = false;
break;
......
......@@ -1178,7 +1178,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break;
}
case MSG_BATTLE: {
pbuf += 18;
pbuf += 26;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit)
......
......@@ -509,7 +509,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
break;
}
case MSG_BATTLE: {
pbuf += 18;
pbuf += 26;
DuelClient::ClientAnalyze(offset, pbuf - offset);
break;
}
......
......@@ -1217,7 +1217,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
break;
}
case MSG_BATTLE: {
pbuf += 18;
pbuf += 26;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, offset, pbuf - offset);
NetServer::ReSendToPlayer(players[1]);
NetServer::ReSendToPlayer(players[2]);
......
......@@ -161,10 +161,8 @@ int32 effect::is_activateable(uint8 playerid, tevent& e, int32 neglect_cond, int
if((code < 1134 || code > 1136) && pduel->game_field->infos.phase == PHASE_DAMAGE_CAL && !(flag & EFFECT_FLAG_DAMAGE_CAL))
return FALSE;
}
if((type & EFFECT_TYPE_FIELD) && handler->current.controler != playerid) {
if(!((type & EFFECT_TYPE_IGNITION) || (type & EFFECT_TYPE_QUICK_O)) || !(flag & EFFECT_FLAG_BOTH_SIDE))
return FALSE;
}
if((type & EFFECT_TYPE_FIELD) && (handler->current.controler != playerid) && !(flag & EFFECT_FLAG_BOTH_SIDE))
return FALSE;
if(handler->is_affected_by_effect(EFFECT_FORBIDDEN))
return FALSE;
if(handler->is_affected_by_effect(EFFECT_CANNOT_TRIGGER))
......
......@@ -1365,7 +1365,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
if(min < -core.temp_var[1] + 1) {
min = -core.temp_var[1] + 1;
}
core.temp_var[0] = min + (max >> 16);
core.temp_var[0] = min + (max << 16);
add_process(PROCESSOR_SELECT_TRIBUTE, 0, 0, 0, sumplayer, core.temp_var[0]);
}
core.units.begin()->step = 2;
......@@ -1530,7 +1530,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
} else {
if(min < -fcount + 1) {
min = -fcount + 1;
required = min + (max >> 16);
required = min + (max << 16);
}
add_process(PROCESSOR_SELECT_TRIBUTE, 0, 0, 0, setplayer, required);
}
......
......@@ -1339,7 +1339,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
newchain.triggering_controler = peffect->handler->current.controler;
newchain.triggering_location = peffect->handler->current.location;
newchain.triggering_sequence = peffect->handler->current.sequence;
newchain.triggering_player = peffect->handler->current.controler;
newchain.triggering_player = infos.turn_player;
core.new_chains.push_back(newchain);
newchain.triggering_effect->handler->set_status(STATUS_CHAINING, TRUE);
core.select_chains.clear();
......@@ -1469,7 +1469,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
newchain.triggering_controler = peffect->handler->current.controler;
newchain.triggering_location = peffect->handler->current.location;
newchain.triggering_sequence = peffect->handler->current.sequence;
newchain.triggering_player = peffect->handler->current.controler;
newchain.triggering_player = 1 - infos.turn_player;
core.new_chains.push_back(newchain);
newchain.triggering_effect->handler->set_status(STATUS_CHAINING, TRUE);
core.select_chains.clear();
......@@ -1615,7 +1615,7 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
//forced trigger
for (auto clit = core.new_fchain_s.begin(); clit != core.new_fchain_s.end(); ++clit) {
effect* peffect = clit->triggering_effect;
if(!(peffect->flag & EFFECT_FLAG_EVENT_PLAYER) && peffect->handler->is_has_relation(peffect)) {
if(!(peffect->flag & (EFFECT_FLAG_EVENT_PLAYER | EFFECT_FLAG_BOTH_SIDE)) && peffect->handler->is_has_relation(peffect)) {
clit->triggering_player = peffect->handler->current.controler;
clit->triggering_controler = peffect->handler->current.controler;
clit->triggering_location = peffect->handler->current.location;
......@@ -1651,7 +1651,7 @@ int32 field::process_point_event(int16 step, int32 special, int32 skip_new) {
}
for (auto clit = core.new_ochain_s.begin(); clit != core.new_ochain_s.end(); ++clit) {
effect* peffect = clit->triggering_effect;
if(!(peffect->flag & EFFECT_FLAG_EVENT_PLAYER) && peffect->handler->is_has_relation(peffect)) {
if(!(peffect->flag & (EFFECT_FLAG_EVENT_PLAYER | EFFECT_FLAG_BOTH_SIDE)) && peffect->handler->is_has_relation(peffect)) {
clit->triggering_player = peffect->handler->current.controler;
clit->triggering_controler = peffect->handler->current.controler;
clit->triggering_location = peffect->handler->current.location;
......@@ -3017,7 +3017,8 @@ int32 field::process_battle_command(uint16 step) {
return FALSE;
}
case 26: {
uint32 a = core.attacker->get_attack(), d;
uint32 aa = core.attacker->get_attack(), ad = core.attacker->get_defence();
uint32 da = 0, dd = 0, a = aa, d;
uint8 pa = core.attacker->current.controler, pd;
uint8 damp = 0;
effect* damchange = 0;
......@@ -3025,10 +3026,12 @@ int32 field::process_battle_command(uint16 step) {
card* reason_card = 0;
core.attacker->set_status(STATUS_BATTLE_DESTROYED, FALSE);
if(core.attack_target) {
da = core.attack_target->get_attack();
dd = core.attack_target->get_defence();
core.attack_target->set_status(STATUS_BATTLE_DESTROYED, FALSE);
pd = core.attack_target->current.controler;
if(core.attack_target->is_position(POS_ATTACK)) {
d = core.attack_target->get_attack();
d = da;
if(a > d) {
damchange = core.attacker->is_affected_by_effect(EFFECT_BATTLE_DAMAGE_TO_EFFECT);
if(damchange) {
......@@ -3076,7 +3079,7 @@ int32 field::process_battle_command(uint16 step) {
}
}
} else {
d = core.attack_target->get_defence();
d = dd;
if(a > d) {
effect_set eset;
uint8 dp[2];
......@@ -3144,13 +3147,16 @@ int32 field::process_battle_command(uint16 step) {
}
pduel->write_buffer8(MSG_BATTLE);
pduel->write_buffer32(core.attacker->get_info_location());
pduel->write_buffer32(a);
pduel->write_buffer32(aa);
pduel->write_buffer32(ad);
pduel->write_buffer8(core.attacker->is_status(STATUS_BATTLE_DESTROYED) ? 1 : 0);
if(core.attack_target) {
pduel->write_buffer32(core.attack_target->get_info_location());
pduel->write_buffer32(d);
pduel->write_buffer32(da);
pduel->write_buffer32(dd);
pduel->write_buffer8(core.attack_target->is_status(STATUS_BATTLE_DESTROYED) ? 1 : 0);
} else {
pduel->write_buffer32(0);
pduel->write_buffer32(0);
pduel->write_buffer32(0);
pduel->write_buffer8(0);
......
--レアメタル化·魔法反射装甲
function c12503902.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_DISABLE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,TIMING_DAMAGE_STEP)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET_EFFECT_FLAG_DAMAGE_STEP)
e1:SetTarget(c12503902.target)
e1:SetOperation(c12503902.operation)
c:RegisterEffect(e1)
end
function c12503902.filter(c)
return c:IsFaceup() and c:IsRace(RACE_MACHINE)
end
function c12503902.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and c12503902.filter(chkc) end
if chk==0 then return Duel.IsExistingTarget(c12503902.filter,tp,LOCATION_MZONE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
Duel.SelectTarget(tp,c12503902.filter,tp,LOCATION_MZONE,0,1,1,nil)
end
function c12503902.tfilter1(c,tc)
return c:IsType(TYPE_SPELL) and c:IsHasCardTarget(tc)
end
function c12503902.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and c12503902.filter(tc) and tc:IsRelateToEffect(e) then
c:SetCardTarget(tc)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE+EFFECT_FLAG_OWNER_RELATE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+0x1fe0000)
e1:SetCondition(c12503902.rcon)
e1:SetValue(500)
tc:RegisterEffect(e1,true)
local g=Duel.GetMatchingGroup(c12503902.tfilter1,tp,LOCATION_SZONE,LOCATION_SZONE,nil,tc)
if g:GetCount()>0 then
local sg,fid=g:GetMaxGroup(Card.GetFieldID)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetRange(LOCATION_SZONE)
e1:SetTargetRange(LOCATION_SZONE,LOCATION_SZONE)
e1:SetCode(EFFECT_DISABLE)
e1:SetCondition(c12503902.discon)
e1:SetTarget(c12503902.distg)
e1:SetLabel(fid)
e1:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e1,true)
else
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetRange(LOCATION_SZONE)
e1:SetCode(EVENT_CHAIN_SOLVING)
e1:SetCondition(c12503902.discon2)
e1:SetOperation(c12503902.disop2)
e1:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e1,true)
end
end
end
function c12503902.rcon(e)
return e:GetOwner():IsHasCardTarget(e:GetHandler())
end
function c12503902.discon(e)
return e:GetHandler():GetCardTargetCount()>0
end
function c12503902.distg(e,c)
return c:GetFieldID()<=e:GetLabel() and c:IsHasCardTarget(e:GetHandler():GetFirstCardTarget()) and c:IsType(TYPE_SPELL)
end
function c12503902.discon2(e,tp,eg,ep,ev,re,r,rp)
local tc=e:GetHandler():GetFirstCardTarget()
if not tc or not re:IsActiveType(TYPE_SPELL) or not re:IsHasProperty(EFFECT_FLAG_CARD_TARGET) then return false end
local g=Duel.GetChainInfo(ev,CHAININFO_TARGET_CARDS)
return g:IsContains(tc)
end
function c12503902.disop2(e,tp,eg,ep,ev,re,r,rp)
Duel.NegateEffect(ev)
e:Reset()
end
--邪気退散
function c13626450.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCost(c13626450.cost)
e1:SetTarget(c13626450.target)
e1:SetOperation(c13626450.activate)
c:RegisterEffect(e1)
end
function c13626450.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD)
end
function c13626450.filter(c)
return c:IsFaceup() and c:IsGetType()==TYPE_TRAP+TYPE_CONTINUOUS and c:IsDestructable()
end
function c13626450.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c13626450.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil) end
local g=Duel.GetMatchingGroup(c13626450.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
end
function c13626450.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c13626450.filter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil)
Duel.Destroy(g,REASON_EFFECT)
end
--魔力浄化
function c1669772.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCost(c1669772.cost)
e1:SetTarget(c1669772.target)
e1:SetOperation(c1669772.activate)
c:RegisterEffect(e1)
end
function c1669772.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD)
end
function c1669772.filter(c)
return c:IsFaceup() and c:IsGetType()==TYPE_SPELL+TYPE_CONTINUOUS and c:IsDestructable()
end
function c1669772.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c1669772.filter,tp,LOCATION_SZONE,LOCATION_SZONE,1,nil) end
local g=Duel.GetMatchingGroup(c1669772.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
end
function c1669772.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c1669772.filter,tp,LOCATION_SZONE,LOCATION_SZONE,nil)
Duel.Destroy(g,REASON_EFFECT)
end
--怒れるもけもけ
function c1965724.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e1)
--reg
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_DESTROYED)
e2:SetCondition(c1965724.regcon)
e2:SetOperation(c1965724.regop)
c:RegisterEffect(e2)
--atk
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_SET_ATTACK)
e3:SetRange(LOCATION_SZONE)
e3:SetTargetRange(LOCATION_MZONE,0)
e3:SetTarget(c1965724.atktg)
e3:SetCondition(c1965724.atkcon)
e3:SetValue(3000)
c:RegisterEffect(e3)
end
function c1965724.cfilter(c,tp)
return c:IsPreviousLocation(LOCATION_MZONE) and c:IsPreviousPosition(POS_FACEUP)
and c:GetPreviousControler()==tp and c:IsRace(RACE_FAIRY)
end
function c1965724.cfilter2(c)
return c:IsFaceup() and c:IsCode(27288416)
end
function c1965724.regcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetFlagEffect(1965724)==0 and eg:IsExists(c1965724.cfilter,1,nil,tp)
and Duel.IsExistingMatchingCard(c1965724.cfilter2,tp,LOCATION_MZONE,0,1,nil)
end
function c1965724.regop(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():RegisterFlagEffect(1965724,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1)
end
function c1965724.atkcon(e)
return e:GetHandler():GetFlagEffect(1965724)~=0
end
function c1965724.atktg(e,c)
return c:IsFaceup() and c:IsCode(27288416)
end
......@@ -12,7 +12,7 @@ function c21843307.initial_effect(c)
end
function c21843307.condition(e,tp,eg,ep,ev,re,r,rp)
local ec=eg:GetFirst()
return ec:IsLevelBelow(4) and ec:IsRace(RACE_WARRIOR)
return ep==tp and ec:IsLevelBelow(4) and ec:IsRace(RACE_WARRIOR)
end
function c21843307.target(e,tp,eg,ep,ev,re,r,rp,chk)
local ec=eg:GetFirst()
......
......@@ -15,6 +15,7 @@ function c22589918.target(e,tp,eg,ep,ev,re,r,rp,chk)
and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.SetTargetPlayer(tp)
Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1)
end
function c22589918.activate(e,tp,eg,ep,ev,re,r,rp)
local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER)
......
--城壁壊しの大槍
function c242146.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_EQUIP)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetTarget(c242146.target)
e1:SetOperation(c242146.operation)
c:RegisterEffect(e1)
--atk up
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_DAMAGE_CALCULATING)
e2:SetRange(LOCATION_SZONE)
e2:SetOperation(c242146.atkup)
c:RegisterEffect(e2)
--Equip limit
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(EFFECT_EQUIP_LIMIT)
e3:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e3:SetValue(1)
c:RegisterEffect(e3)
end
function c242146.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end
if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP)
Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0)
end
function c242146.operation(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if e:GetHandler():IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then
Duel.Equip(tp,e:GetHandler(),tc)
end
end
function c242146.atkup(e,tp,eg,ep,ev,re,r,rp)
local eqc=e:GetHandler():GetEquipTarget()
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
if d and a==eqc and d:GetBattlePosition()==POS_FACEDOWN_DEFENCE then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_PHASE+RESET_DAMAGE_CAL)
e1:SetValue(1500)
a:RegisterEffect(e1)
end
end
--ツーマンセルバトル
function c25578802.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e1)
--release
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(25578802,0))
e2:SetCategory(CATEGORY_SPECIAL_SUMMON)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e2:SetRange(LOCATION_SZONE)
e2:SetProperty(EFFECT_FLAG_BOTH_SIDE)
e2:SetCode(EVENT_PHASE+PHASE_END)
e2:SetCountLimit(1)
e2:SetCondition(c25578802.condition)
e2:SetTarget(c25578802.target)
e2:SetOperation(c25578802.operation)
c:RegisterEffect(e2)
end
function c25578802.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp
end
function c25578802.spfilter(c,e,tp)
return c:IsType(TYPE_NORMAL) and c:GetLevel()==4 and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function c25578802.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
and Duel.IsExistingMatchingCard(c25578802.spfilter,tp,LOCATION_HAND,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND)
end
function c25578802.operation(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c25578802.spfilter,tp,LOCATION_HAND,0,1,1,nil,e,tp)
if g:GetCount()>0 then
Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)
end
end
--絶体絶命
function c27744077.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,TIMING_BATTLE_START)
e1:SetCondition(c27744077.condition)
e1:SetOperation(c27744077.activate)
c:RegisterEffect(e1)
end
function c27744077.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()<PHASE_MAIN2
end
function c27744077.activate(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_IGNORE_BATTLE_TARGET)
e1:SetTargetRange(LOCATION_MZONE,0)
e1:SetProperty(EFFECT_FLAG_SET_AVAILABLE)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
--幻惑のラフレシア
function c31440542.initial_effect(c)
--flip
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(31440542,0))
e1:SetCategory(CATEGORY_CONTROL)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_FLIP)
e1:SetTarget(c31440542.ctltg)
e1:SetOperation(c31440542.ctlop)
c:RegisterEffect(e1)
end
function c31440542.filter(c)
return c:IsFaceup() and c:IsControlerCanBeChanged()
end
function c31440542.ctltg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(1-tp) and c31440542.filter(chkc) end
if chk==0 then return true end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_CONTROL)
local g=Duel.SelectTarget(tp,c31440542.filter,tp,0,LOCATION_MZONE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_CONTROL,g,1,0,0)
end
function c31440542.ctlop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsRelateToEffect(e) and tc:IsFaceup() and not Duel.GetControl(tc,tp,PHASE_END,1) then
if not tc:IsImmuneToEffect(e) and tc:IsAbleToChangeControler() then
Duel.Destroy(tc,REASON_EFFECT)
end
end
end
--断頭台の惨劇
function c35686187.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_DESTROY)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_CHANGE_POS)
e1:SetCondition(c35686187.condition)
e1:SetTarget(c35686187.target)
e1:SetOperation(c35686187.activate)
c:RegisterEffect(e1)
end
function c35686187.cfilter(c,tp)
return c:IsControler(tp) and c:IsPreviousPosition(POS_FACEUP_ATTACK) and c:IsPosition(POS_FACEUP_DEFENCE)
end
function c35686187.condition(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c35686187.cfilter,1,nil,1-tp)
end
function c35686187.filter(c)
return c:IsDefencePos() and c:IsDestructable()
end
function c35686187.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c35686187.filter,tp,0,LOCATION_MZONE,1,nil) end
local g=Duel.GetMatchingGroup(c35686187.filter,tp,0,LOCATION_MZONE,nil)
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,g:GetCount(),0,0)
end
function c35686187.activate(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c35686187.filter,tp,0,LOCATION_MZONE,nil)
if g:GetCount()>0 then
Duel.Destroy(g,REASON_EFFECT)
end
end
--アストラルバリア
function c37053871.initial_effect(c)
--activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,TIMING_MAIN_END)
e1:SetTarget(c37053871.atktg1)
e1:SetOperation(c37053871.atkop)
c:RegisterEffect(e1)
--target change
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(37053871,1))
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_BE_BATTLE_TARGET)
e2:SetRange(LOCATION_SZONE)
e2:SetCondition(c37053871.atkcon)
e2:SetTarget(c37053871.atktg2)
e2:SetOperation(c37053871.atkop)
c:RegisterEffect(e2)
end
function c37053871.atkcon(e,tp,eg,ep,ev,re,r,rp)
return eg:GetFirst():IsControler(tp)
end
function c37053871.atktg1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
e:SetLabel(0)
if Duel.CheckEvent(EVENT_BE_BATTLE_TARGET) and Duel.GetAttackTarget():IsControler(tp)
and Duel.GetAttackTarget() and Duel.SelectYesNo(tp,aux.Stringid(37053871,0)) then
e:SetLabel(1)
end
end
function c37053871.atktg2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
e:SetLabel(1)
end
function c37053871.atkop(e,tp,eg,ep,ev,re,r,rp)
if e:GetLabel()==0 or not e:GetHandler():IsRelateToEffect(e) then return end
Duel.ChangeAttackTarget(nil)
end
--クロスカウンター
function c37083210.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetCondition(c37083210.condition)
e1:SetOperation(c37083210.activate)
c:RegisterEffect(e1)
end
function c37083210.condition(e,tp,eg,ep,ev,re,r,rp)
local a=Duel.GetAttacker()
local at=Duel.GetAttackTarget()
return Duel.GetCurrentPhase()==PHASE_DAMAGE and not Duel.IsDamageCalculated()
and a:IsControler(1-tp) and at and at:IsPosition(POS_FACEUP_DEFENCE) and a:GetAttack()<at:GetDefence()
end
function c37083210.activate(e,tp,eg,ep,ev,re,r,rp)
local at=Duel.GetAttackTarget()
if at:IsFaceup() and at:IsRelateToBattle() then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetCondition(c37083210.dcon)
e1:SetOperation(c37083210.dop)
e1:SetReset(RESET_PHASE+PHASE_DAMAGE)
at:RegisterEffect(e1)
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e2:SetCode(EVENT_BATTLE_END)
e2:SetOperation(c37083210.desop)
e2:SetReset(RESET_PHASE+PHASE_DAMAGE)
Duel.RegisterEffect(e2,tp)
end
end
function c37083210.dcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return ep~=tp and Duel.GetAttackTarget()==c
end
function c37083210.dop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(ep,Duel.GetBattleDamage(ep)*2)
end
function c37083210.desop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetAttacker():IsRelateToBattle() then
Duel.Destroy(Duel.GetAttacker(),REASON_EFFECT)
end
end
--錬金生物 ホムンクルス
function c40410110.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(40410110,0))
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE)
e1:SetCountLimit(1)
e1:SetOperation(c40410110.attop)
c:RegisterEffect(e1)
end
function c40410110.attop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsFaceup() and c:IsRelateToEffect(e) then
Duel.Hint(HINT_SELECTMSG,tp,562)
local catt=c:GetAttribute()
local att=Duel.AnnounceAttribute(tp,1,0xffff - catt)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_COPY_INHERIT)
e1:SetCode(EFFECT_CHANGE_ATTRIBUTE)
e1:SetValue(att)
e1:SetReset(RESET_EVENT+0x1ff0000)
c:RegisterEffect(e1)
end
end
--連鎖炸薬
function c48276469.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,TIMING_DRAW_PHASE)
c:RegisterEffect(e1)
--damage
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e2:SetCode(EVENT_CHAIN_SOLVED)
e2:SetRange(LOCATION_SZONE)
e2:SetOperation(c48276469.damop)
c:RegisterEffect(e2)
end
function c48276469.damop(e,tp,eg,ep,ev,re,r,rp)
local c=re:GetHandler()
if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_TRAP) and c~=e:GetHandler() then
Duel.Damage(rp,1000,REASON_EFFECT)
end
end
--与奪の首飾り
function c48576971.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_EQUIP)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET)
e1:SetTarget(c48576971.target)
e1:SetOperation(c48576971.operation)
c:RegisterEffect(e1)
--Equip limit
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_EQUIP_LIMIT)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetValue(1)
c:RegisterEffect(e2)
--effect
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(48576971,0))
e3:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e3:SetCode(EVENT_TO_GRAVE)
e3:SetCondition(c48576971.effcon)
e3:SetTarget(c48576971.efftg)
e3:SetOperation(c48576971.effop)
c:RegisterEffect(e3)
end
function c48576971.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and c48576971.filter(chkc) end
if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_EQUIP)
Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil)
Duel.SetOperationInfo(0,CATEGORY_EQUIP,e:GetHandler(),1,0,0)
end
function c48576971.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and tc:IsRelateToEffect(e) and tc:IsFaceup() then
Duel.Equip(tp,c,tc)
end
end
function c48576971.effcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local ec=c:GetPreviousEquipTarget()
return c:IsReason(REASON_LOST_TARGET) and ec:IsReason(REASON_BATTLE)
end
function c48576971.efftg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
local opt=0
local b1=Duel.IsPlayerCanDraw(tp,1)
local b2=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)>0
if b1 and b2 then
opt=Duel.SelectOption(tp,aux.Stringid(48576971,1),aux.Stringid(48576971,2))
elseif b1 then
opt=Duel.SelectOption(tp,aux.Stringid(48576971,1))
elseif b2 then
opt=Duel.SelectOption(tp,aux.Stringid(48576971,2))+1
else opt=2 end
e:SetLabel(opt)
if opt==0 then
e:SetCategory(CATEGORY_DRAW)
e:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
Duel.SetTargetPlayer(tp)
Duel.SetTargetParam(1)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1)
elseif opt==1 then
e:SetCategory(CATEGORY_HANDES)
e:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
Duel.SetTargetPlayer(1-tp)
Duel.SetTargetParam(1)
Duel.SetOperationInfo(0,CATEGORY_HANDES,nil,0,1-tp,1)
else
e:SetCategory(0)
e:SetProperty(0)
end
end
function c48576971.effop(e,tp,eg,ep,ev,re,r,rp)
if e:GetLabel()==0 then
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
Duel.Draw(p,d,REASON_EFFECT)
elseif e:GetLabel()==1 then
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
local g=Duel.GetFieldGroup(p,LOCATION_HAND,0):RandomSelect(p,d)
Duel.SendtoGrave(g,REASON_EFFECT+REASON_DISCARD)
end
end
--コザッキーの研究成果
function c49998907.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(c49998907.target)
e1:SetOperation(c49998907.activate)
c:RegisterEffect(e1)
end
function c49998907.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>2 end
end
function c49998907.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.SortDecktop(tp,tp,3)
end
--爆炎集合体 ガイヤ·ソウル
function c51355346.initial_effect(c)
--atk
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(51355346,0))
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_IGNITION)
e1:SetRange(LOCATION_MZONE)
e1:SetCost(c51355346.atkcost)
e1:SetOperation(c51355346.atkop)
c:RegisterEffect(e1)
--pierce
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_PIERCE)
c:RegisterEffect(e2)
--destroy
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(51355346,1))
e3:SetCategory(CATEGORY_DESTROY)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e3:SetRange(LOCATION_MZONE)
e3:SetCode(EVENT_PHASE+PHASE_END)
e3:SetProperty(EFFECT_FLAG_REPEAT)
e3:SetCountLimit(1)
e3:SetTarget(c51355346.destg)
e3:SetOperation(c51355346.desop)
c:RegisterEffect(e3)
end
function c51355346.atkcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckReleaseGroup(tp,Card.IsRace,1,e:GetHandler(),RACE_PYRO) end
local g=Duel.SelectReleaseGroup(tp,Card.IsRace,1,2,e:GetHandler(),RACE_PYRO)
Duel.Release(g,REASON_COST)
e:SetLabel(g:GetCount())
end
function c51355346.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsFaceup() and c:IsRelateToEffect(e) then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_COPY_INHERIT)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+0x1ff0000)
e1:SetValue(e:GetLabel()*1000)
c:RegisterEffect(e1)
end
end
function c51355346.destg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_DESTROY,e:GetHandler(),1,0,0)
end
function c51355346.desop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then
Duel.Destroy(c,REASON_EFFECT)
end
end
--ゴーゴンの眼
function c52648457.initial_effect(c)
--activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetOperation(c52648457.activate)
c:RegisterEffect(e1)
end
function c52648457.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
--disable
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_DISABLE)
e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetTarget(c52648457.distg)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
end
function c52648457.distg(e,c)
return c:IsDefencePos()
end
--記憶抹消
function c52817046.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_TODECK+CATEGORY_DRAW)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCondition(c52817046.condition)
e1:SetTarget(c52817046.target)
e1:SetOperation(c52817046.activate)
c:RegisterEffect(e1)
end
function c52817046.condition(e,tp,eg,ep,ev,re,r,rp,chk)
local ct=Duel.GetFieldGroupCount(tp,0,LOCATION_HAND)
return ct>0 and ct<=3
end
function c52817046.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDraw(1-tp)
and Duel.IsExistingMatchingCard(Card.IsAbleToDeck,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.SetTargetPlayer(1-tp)
Duel.SetOperationInfo(0,CATEGORY_TODECK,nil,1,tp,LOCATION_HAND)
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1)
end
function c52817046.activate(e,tp,eg,ep,ev,re,r,rp)
local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER)
local g=Duel.GetFieldGroup(p,LOCATION_HAND,0)
if g:GetCount()==0 then return end
Duel.SendtoDeck(g,nil,2,REASON_EFFECT)
Duel.ShuffleDeck(p)
Duel.BreakEffect()
Duel.Draw(p,g:GetCount(),REASON_EFFECT)
end
--月の女戦士
function c64751286.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetCondition(c64751286.condtion)
e1:SetValue(1000)
c:RegisterEffect(e1)
end
function c64751286.condtion(e)
local c=e:GetHandler()
local ph=Duel.GetCurrentPhase()
local bc=c:GetBattleTarget()
return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL)
and c:IsRelateToBattle() and bc and bc:IsFaceup() and bc:IsAttribute(ATTRIBUTE_LIGHT)
end
--怨念のキラードール
function c72657739.initial_effect(c)
--register
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_TO_GRAVE)
e1:SetOperation(c72657739.regop)
c:RegisterEffect(e1)
end
function c72657739.regop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsPreviousLocation(LOCATION_ONFIELD) and c:IsReason(REASON_EFFECT)
and re:GetActiveType()==TYPE_CONTINUOUS+TYPE_SPELL then
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(72657739,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e1:SetCode(EVENT_PHASE+PHASE_STANDBY)
e1:SetCountLimit(1)
e1:SetRange(LOCATION_GRAVE)
e1:SetCondition(c72657739.spcon)
e1:SetTarget(c72657739.sptg)
e1:SetOperation(c72657739.spop)
e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_STANDBY+RESET_SELF_TURN)
c:RegisterEffect(e1)
end
end
function c72657739.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp
end
function c72657739.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end
function c72657739.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
if e:GetHandler():IsRelateToEffect(e) then
Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP)
end
end
--援護射撃
function c74458486.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetCondition(c74458486.condition)
e1:SetTarget(c74458486.target)
e1:SetOperation(c74458486.activate)
c:RegisterEffect(e1)
end
function c74458486.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()==PHASE_DAMAGE and not Duel.IsDamageCalculated()
and Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()
end
function c74458486.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsLocation(LOCATION_MZONE) and chkc:IsControler(tp) and chkc:IsFaceup() end
if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,Duel.GetAttackTarget()) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,Duel.GetAttackTarget())
end
function c74458486.activate(e,tp,eg,ep,ev,re,r,rp)
local at=Duel.GetAttackTarget()
local tc=Duel.GetFirstTarget()
if at:IsFaceup() and at:IsRelateToBattle() and tc:IsRelateToEffect(e) and tc:IsFaceup() then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+RESET_DAMAGE_CAL)
e1:SetValue(tc:GetAttack())
at:RegisterEffect(e1)
end
end
--マインド·ハック
function c75392615.initial_effect(c)
--confirm
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCost(c75392615.cost)
e1:SetTarget(c75392615.target)
e1:SetOperation(c75392615.operation)
c:RegisterEffect(e1)
end
function c75392615.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckLPCost(tp,500) end
Duel.PayLPCost(tp,500)
end
function c75392615.filter(c)
return (c:IsOnField() and c:IsFacedown()) or (c:IsLocation(LOCATION_HAND) and not c:IsPublic())
end
function c75392615.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c75392615.filter,tp,0,LOCATION_HAND+LOCATION_ONFIELD,1,nil) end
end
function c75392615.operation(e,tp,eg,ep,ev,re,r,rp)
local g=Duel.GetMatchingGroup(c75392615.filter,tp,0,LOCATION_HAND+LOCATION_ONFIELD,nil)
Duel.ConfirmCards(tp,g)
Duel.ShuffleHand(1-tp)
end
--無効
function c80862132.initial_effect(c)
--change effect
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_CHAINING)
e1:SetCondition(c80862132.condition)
e1:SetOperation(c80862132.activate)
c:RegisterEffect(e1)
end
function c80862132.condition(e,tp,eg,ep,ev,re,r,rp)
if not re:IsHasProperty(EFFECT_FLAG_PLAYER_TARGET) then return false end
if Duel.GetOperationCount(ev)~=1 then return false end
local ex,cg,cc,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DRAW)
return ex and cv>0
end
function c80862132.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeChainOperation(ev,c80862132.repop)
end
function c80862132.repop(e,tp,eg,ep,ev,re,r,rp)
local ex,cg,cc,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DRAW)
if cp<2 then
Duel.DiscardDeck(cp,cv,REASON_EFFECT)
end
end
......@@ -11,13 +11,12 @@ function c84970821.initial_effect(c)
e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD)
e2:SetCode(EVENT_CHAIN_SOLVED)
e2:SetRange(LOCATION_SZONE)
e2:SetOperation(c84970821.op)
e2:SetOperation(c84970821.damop)
c:RegisterEffect(e2)
end
function c84970821.op(e,tp,eg,ep,ev,re,r,rp)
local te,cp=Duel.GetChainInfo(ev,CHAININFO_TRIGGERING_EFFECT,CHAININFO_TRIGGERING_PLAYER)
local c=te:GetHandler()
if te:IsHasType(EFFECT_TYPE_ACTIVATE) and c:IsType(TYPE_SPELL) and c~=e:GetHandler() then
Duel.Damage(cp,1000,REASON_EFFECT)
function c84970821.damop(e,tp,eg,ep,ev,re,r,rp)
local c=re:GetHandler()
if re:IsHasType(EFFECT_TYPE_ACTIVATE) and re:IsActiveType(TYPE_SPELL) and c~=e:GetHandler() then
Duel.Damage(rp,1000,REASON_EFFECT)
end
end
--きつね火
function c88753985.initial_effect(c)
--register
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_BATTLE_DESTROYED)
e1:SetOperation(c88753985.regop)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e2:SetRange(LOCATION_MZONE)
e2:SetCode(EFFECT_UNRELEASABLE_SUM)
e2:SetValue(1)
c:RegisterEffect(e2)
end
function c88753985.regop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsLocation(LOCATION_GRAVE) and c:IsReason(REASON_BATTLE)
and bit.band(c:GetBattlePosition(),POS_FACEUP)~=0 then
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(88753985,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e1:SetCode(EVENT_PHASE+PHASE_END)
e1:SetCountLimit(1)
e1:SetRange(LOCATION_GRAVE)
e1:SetTarget(c88753985.sptg)
e1:SetOperation(c88753985.spop)
e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END)
c:RegisterEffect(e1)
end
end
function c88753985.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end
function c88753985.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0 then return end
if e:GetHandler():IsRelateToEffect(e) then
Duel.SpecialSummon(e:GetHandler(),0,tp,tp,false,false,POS_FACEUP)
end
end
--ホーリーライフバリアー
function c88789641.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCost(c88789641.cost)
e1:SetOperation(c88789641.activate)
c:RegisterEffect(e1)
end
function c88789641.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) end
Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD)
end
function c88789641.activate(e,tp,eg,ep,ev,re,r,rp)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CHANGE_DAMAGE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,0)
e1:SetValue(c88789641.val)
e1:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e1,tp)
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE)
e2:SetTargetRange(LOCATION_MZONE,0)
e2:SetReset(RESET_PHASE+PHASE_END)
e2:SetValue(1)
Duel.RegisterEffect(e2,tp)
end
function c88789641.val(e,re,val,r,rp,rc)
if e:GetHandlerPlayer()~=rp then
return 0
else return val end
end
--グリード
function c89405199.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e1)
--reg
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetRange(LOCATION_SZONE)
e2:SetCode(EVENT_DRAW)
e2:SetCondition(c89405199.drcon)
e2:SetOperation(c89405199.drop)
c:RegisterEffect(e2)
--damage
local e3=Effect.CreateEffect(c)
e3:SetDescription(aux.Stringid(89405199,0))
e3:SetCategory(CATEGORY_DAMAGE)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e3:SetRange(LOCATION_SZONE)
e3:SetCode(EVENT_PHASE+PHASE_END)
e3:SetProperty(EFFECT_FLAG_REPEAT)
e3:SetCountLimit(1)
e3:SetCondition(c89405199.damcon)
e3:SetTarget(c89405199.damtg)
e3:SetOperation(c89405199.damop)
c:RegisterEffect(e3)
end
function c89405199.drcon(e,tp,eg,ep,ev,re,r,rp)
return bit.band(r,REASON_EFFECT)~=0
end
function c89405199.drop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local flag=(ep==0 and 89405199 or 89405200)
local ct=c:GetFlagEffectLabel(flag)
if ct then
c:SetFlagEffectLabel(flag,ct+ev)
else
c:RegisterFlagEffect(flag,RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END,0,1,ev)
end
end
function c89405199.damcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:GetFlagEffect(89405199)>0 or c:GetFlagEffect(89405200)>0
end
function c89405199.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
local c=e:GetHandler()
local ct1=c:GetFlagEffectLabel(89405199)
local ct2=c:GetFlagEffectLabel(89405200)
if ct1 and ct2 then
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,PLAYER_ALL,0)
elseif ct1 then
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,0,ct1*500)
elseif ct2 then
Duel.SetOperationInfo(0,CATEGORY_DAMAGE,nil,0,1,ct2*500)
end
end
function c89405199.damop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end
local ct1=c:GetFlagEffectLabel(89405199+tp)
local ct2=c:GetFlagEffectLabel(89405199+1-tp)
if ct1 then Duel.Damage(tp,ct1*500,REASON_EFFECT) end
if ct2 then Duel.Damage(1-tp,ct2*500,REASON_EFFECT) end
end
--深淵の指名者
function c89801755.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetCost(c89801755.cost)
e1:SetTarget(c89801755.target)
e1:SetOperation(c89801755.activate)
c:RegisterEffect(e1)
end
function c89801755.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckLPCost(tp,1000) end
Duel.PayLPCost(tp,1000)
end
function c89801755.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.Hint(HINT_SELECTMSG,tp,562)
local att=Duel.AnnounceAttribute(tp,1,0xff)
Duel.Hint(HINT_SELECTMSG,tp,563)
local rc=Duel.AnnounceRace(tp,1,0xffffff)
e:SetLabel(att)
Duel.SetTargetPlayer(1-tp)
Duel.SetTargetParam(rc)
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,1,1-tp,LOCATION_HAND+LOCATION_GRAVE)
end
function c89801755.filter(c,rc,att)
return c:IsRace(rc) and c:IsAttribute(att) and c:IsAbleToGrave()
end
function c89801755.activate(e,tp,eg,ep,ev,re,r,rp)
local att=e:GetLabel()
local p,rc=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TO_GRAVE)
local g=Duel.SelectMatchingCard(p,c89801755.filter,p,LOCATION_HAND+LOCATION_DECK,0,1,1,nil,rc,att)
if g:GetCount()>0 then
Duel.SendtoGrave(g,REASON_EFFECT)
else
local cg=Duel.GetFieldGroup(p,LOCATION_DECK+LOCATION_HAND,0)
Duel.ConfirmCards(1-p,cg)
Duel.ShuffleHand(p)
Duel.ShuffleDeck(p)
end
end
--挑発
function c90740329.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(0,TIMING_MAIN_END)
e1:SetCondition(c90740329.condition)
e1:SetTarget(c90740329.target)
e1:SetOperation(c90740329.activate)
c:RegisterEffect(e1)
end
function c90740329.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()==PHASE_MAIN1
end
function c90740329.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and chkc:IsFaceup() end
if chk==0 then return Duel.IsExistingTarget(Card.IsFaceup,tp,LOCATION_MZONE,0,1,nil) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FACEUP)
Duel.SelectTarget(tp,Card.IsFaceup,tp,LOCATION_MZONE,0,1,1,nil)
end
function c90740329.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsFaceup() and tc:IsRelateToEffect(e) then
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_MUST_BE_ATTACKED)
e1:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+PHASE_END)
tc:RegisterEffect(e1)
end
end
--ホルスのしもべ
function c9264485.initial_effect(c)
--cannot be target
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET)
e1:SetRange(LOCATION_MZONE)
e1:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE)
e1:SetTarget(c9264485.etarget)
e1:SetValue(c9264485.efilter)
c:RegisterEffect(e1)
end
function c9264485.etarget(e,c)
local code=c:GetCode()
return code==75830094 or code==11224103 or code==48229808
end
function c9264485.efilter(e,re,rp)
return e:GetHandlerPlayer()~=rp
end
......@@ -4,9 +4,13 @@ function c96677818.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetTarget(c96677818.target)
e1:SetOperation(c96677818.activate)
c:RegisterEffect(e1)
end
function c96677818.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetFieldGroupCount(tp,LOCATION_DECK,0)>2 end
end
function c96677818.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.SortDecktop(tp,tp,3)
end
--エクトプラズマー
function c97342942.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
c:RegisterEffect(e1)
--release
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(97342942,0))
e2:SetCategory(CATEGORY_RELEASE+CATEGORY_DAMAGE)
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F)
e2:SetRange(LOCATION_SZONE)
e2:SetProperty(EFFECT_FLAG_BOTH_SIDE+EFFECT_FLAG_REPEAT)
e2:SetCode(EVENT_PHASE+PHASE_END)
e2:SetCountLimit(1)
e2:SetCondition(c97342942.condition)
e2:SetTarget(c97342942.target)
e2:SetOperation(c97342942.operation)
c:RegisterEffect(e2)
end
function c97342942.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp
end
function c97342942.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
Duel.SetOperationInfo(0,CATEGORY_RELEASE,nil,1,tp,LOCATION_MZONE)
end
function c97342942.rfilter(c,e)
return c:IsFaceup() and c:IsReleasableByEffect() and not c:IsImmuneToEffect(e)
end
function c97342942.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end
local rg=Duel.SelectReleaseGroup(tp,c97342942.rfilter,1,1,e:GetHandler(),e)
if Duel.Release(rg,REASON_EFFECT)>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local atk=rg:GetFirst():GetBaseAttack()/2
Duel.Damage(1-tp,atk,REASON_EFFECT)
end
end
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