-
-
Notifications
You must be signed in to change notification settings - Fork 62
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #146 from kevinlul/Action-Duel
Action Duel scripts for Beta #1
- Loading branch information
Showing
169 changed files
with
6,532 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
--地縛原 | ||
--Earthbound Tundra | ||
--Scripted by Larry126 | ||
local s,id=GetID() | ||
function s.initial_effect(c) | ||
--cannot summon in def | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetType(EFFECT_TYPE_FIELD) | ||
e1:SetRange(LOCATION_FZONE) | ||
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) | ||
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON) | ||
e1:SetTargetRange(1,1) | ||
e1:SetTarget(s.splimit) | ||
c:RegisterEffect(e1) | ||
local e2=e1:Clone() | ||
e2:SetCode(EFFECT_CANNOT_SUMMON) | ||
c:RegisterEffect(e2) | ||
local e3=e1:Clone() | ||
e3:SetCode(EFFECT_CANNOT_FLIP_SUMMON) | ||
c:RegisterEffect(e3) | ||
--cannot change position | ||
local e4=Effect.CreateEffect(c) | ||
e4:SetType(EFFECT_TYPE_FIELD) | ||
e4:SetRange(LOCATION_FZONE) | ||
e4:SetCode(EFFECT_CANNOT_CHANGE_POSITION) | ||
e4:SetTargetRange(LOCATION_MZONE,LOCATION_MZONE) | ||
e4:SetTarget(s.poslimit) | ||
c:RegisterEffect(e4) | ||
--send | ||
local e5=Effect.CreateEffect(c) | ||
e5:SetCategory(CATEGORY_TOGRAVE) | ||
e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_F) | ||
e5:SetRange(LOCATION_FZONE) | ||
e5:SetCode(EVENT_TO_HAND) | ||
e5:SetCondition(s.tgcon) | ||
e5:SetTarget(s.tgtg) | ||
e5:SetOperation(s.tgop) | ||
c:RegisterEffect(e5) | ||
--action card | ||
local e5=Effect.CreateEffect(c) | ||
e5:SetType(EFFECT_TYPE_FIELD) | ||
e5:SetProperty(EFFECT_FLAG_PLAYER_TARGET) | ||
e5:SetCode(id) | ||
e5:SetRange(LOCATION_FZONE) | ||
e5:SetTargetRange(1,1) | ||
e5:SetValue(1) | ||
c:RegisterEffect(e5) | ||
end | ||
function s.splimit(e,c,sump,sumtype,sumpos,targetp,se) | ||
return sumpos&POS_DEFENSE>0 | ||
end | ||
function s.poslimit(e,c) | ||
return c:IsPosition(POS_FACEUP_ATTACK) | ||
end | ||
function s.tgfilter(c) | ||
return c:IsType(TYPE_ACTION) | ||
end | ||
function s.tgcon(e,tp,eg,ep,ev,re,r,rp) | ||
return eg:IsExists(s.tgfilter,1,nil) | ||
end | ||
function s.tgtg(e,tp,eg,ep,ev,re,r,rp,chk) | ||
if chk==0 then return true end | ||
Duel.SetOperationInfo(0,CATEGORY_TOGRAVE,nil,0,1-ep,LOCATION_HAND) | ||
Duel.SetChainLimit(s.limit(ep)) | ||
end | ||
function s.limit(ep) | ||
return function (e,lp,tp) | ||
return not (e:GetHandler():IsType(TYPE_ACTION) and tp~=1-ep) | ||
end | ||
end | ||
function s.tgop(e,tp,eg,ep,ev,re,r,rp) | ||
if not e:GetHandler():IsRelateToEffect(e) then return end | ||
local g=Duel.GetMatchingGroup(s.tgfilter,1-ep,LOCATION_HAND,0,nil) | ||
Duel.SendtoGrave(g,REASON_EFFECT) | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
--加速 | ||
--Acceleration | ||
local s,id=GetID() | ||
function s.initial_effect(c) | ||
--reflect | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetType(EFFECT_TYPE_ACTIVATE) | ||
e1:SetCode(EVENT_CHAINING) | ||
e1:SetCondition(s.condition) | ||
e1:SetOperation(s.operation) | ||
c:RegisterEffect(e1) | ||
end | ||
function s.condition(e,tp,eg,ep,ev,re,r,rp) | ||
local ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_DAMAGE) | ||
if ex then return true end | ||
ex,cg,ct,cp,cv=Duel.GetOperationInfo(ev,CATEGORY_RECOVER) | ||
return ex | ||
end | ||
function s.operation(e,tp,eg,ep,ev,re,r,rp) | ||
local cid=Duel.GetChainInfo(ev,CHAININFO_CHAIN_ID) | ||
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:SetLabel(cid) | ||
e1:SetValue(s.refcon) | ||
e1:SetReset(RESET_CHAIN) | ||
Duel.RegisterEffect(e1,tp) | ||
end | ||
function s.refcon(e,re,val,r,rp,rc) | ||
local cc=Duel.GetCurrentChain() | ||
local cc=Duel.GetCurrentChain() | ||
if cc==0 or (r&REASON_EFFECT)==0 then return end | ||
local cid=Duel.GetChainInfo(0,CHAININFO_CHAIN_ID) | ||
if cid==e:GetLabel() then return 0 end | ||
return val | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
--突撃 | ||
--Charge Recklessly | ||
local s,id=GetID() | ||
function s.initial_effect(c) | ||
--Activate | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetType(EFFECT_TYPE_ACTIVATE) | ||
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) | ||
e1:SetCondition(s.condition) | ||
e1:SetOperation(s.activate) | ||
c:RegisterEffect(e1) | ||
end | ||
function s.condition(e,tp,eg,ep,ev,re,r,rp) | ||
if not (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) then return false end | ||
local tc=Duel.GetAttacker() | ||
local at=Duel.GetAttackTarget() | ||
if not at or tc:IsFacedown() or at:IsFacedown() then return false end | ||
if tc:IsControler(1-tp) then tc=at end | ||
e:SetLabelObject(tc) | ||
return tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) | ||
end | ||
function s.activate(e,tp,eg,ep,ev,re,r,rp) | ||
local c=e:GetHandler() | ||
local tc=e:GetLabelObject() | ||
if tc:IsRelateToBattle() and not tc:IsImmuneToEffect(e) then | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetType(EFFECT_TYPE_SINGLE) | ||
e1:SetCode(EFFECT_UPDATE_ATTACK) | ||
e1:SetValue(600) | ||
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL) | ||
tc:RegisterEffect(e1) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
--アタック・フォース | ||
--Attack Force | ||
local s,id=GetID() | ||
function s.initial_effect(c) | ||
--Activate | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetType(EFFECT_TYPE_ACTIVATE) | ||
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE) | ||
e1:SetCondition(s.condition) | ||
e1:SetOperation(s.activate) | ||
c:RegisterEffect(e1) | ||
end | ||
function s.condition(e,tp,eg,ep,ev,re,r,rp) | ||
if not (Duel.GetCurrentPhase()~=PHASE_DAMAGE or not Duel.IsDamageCalculated()) then return false end | ||
local tc=Duel.GetAttacker() | ||
local at=Duel.GetAttackTarget() | ||
if not at or tc:IsFacedown() or at:IsFacedown() then return false end | ||
if tc:IsControler(1-tp) then | ||
tc=Duel.GetAttackTarget() | ||
at=Duel.GetAttacker() | ||
end | ||
e:SetLabelObject(tc) | ||
return tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE) and tc:GetAttack()>at:GetAttack() | ||
end | ||
function s.activate(e,tp,eg,ep,ev,re,r,rp) | ||
local c=e:GetHandler() | ||
local tc=e:GetLabelObject() | ||
if tc:IsRelateToBattle() and not tc:IsImmuneToEffect(e) then | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetType(EFFECT_TYPE_SINGLE) | ||
e1:SetCode(EFFECT_UPDATE_ATTACK) | ||
e1:SetValue(600) | ||
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_DAMAGE_CAL) | ||
tc:RegisterEffect(e1) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
--バトル・バーナー | ||
--Battle Burner | ||
local s,id=GetID() | ||
function s.initial_effect(c) | ||
--Activate | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetDescription(aux.Stringid(id,0)) | ||
e1:SetCategory(CATEGORY_ATKCHANGE) | ||
e1:SetType(EFFECT_TYPE_ACTIVATE) | ||
e1:SetCode(EVENT_ATTACK_DISABLED) | ||
e1:SetProperty(EFFECT_FLAG_CARD_TARGET) | ||
e1:SetTarget(s.target) | ||
e1:SetOperation(s.operation) | ||
c:RegisterEffect(e1) | ||
end | ||
function s.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) | ||
if chkc then return chkc==eg:GetFirst() end | ||
if chk==0 then return eg:GetFirst():IsFaceup() and eg:GetFirst():IsCanBeEffectTarget(e) end | ||
Duel.SetTargetCard(eg:GetFirst()) | ||
end | ||
function s.operation(e,tp,eg,ep,ev,re,r,rp) | ||
local c=e:GetHandler() | ||
local tc=Duel.GetFirstTarget() | ||
if tc:IsFaceup() and tc:IsRelateToEffect(e) and tc:GetFlagEffect(id)==0 then | ||
tc:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1) | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetType(EFFECT_TYPE_SINGLE) | ||
e1:SetCode(EFFECT_EXTRA_ATTACK) | ||
e1:SetValue(1) | ||
e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) | ||
tc:RegisterEffect(e1) | ||
local e2=Effect.CreateEffect(c) | ||
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS) | ||
e2:SetCode(EVENT_BATTLE_START) | ||
e2:SetCountLimit(1) | ||
e2:SetOperation(s.atkop) | ||
e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) | ||
tc:RegisterEffect(e2) | ||
local e3=Effect.CreateEffect(c) | ||
e3:SetDescription(aux.Stringid(id,1)) | ||
e3:SetProperty(EFFECT_FLAG_CLIENT_HINT) | ||
e3:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) | ||
tc:RegisterEffect(e3) | ||
end | ||
end | ||
function s.atkop(e,tp,eg,ep,ev,re,r,rp) | ||
local e1=Effect.CreateEffect(e:GetOwner()) | ||
e1:SetDescription(aux.Stringid(id,2)) | ||
e1:SetCategory(CATEGORY_DESTROY) | ||
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) | ||
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F) | ||
e1:SetCode(EVENT_BATTLE_DESTROYING) | ||
e1:SetCondition(aux.bdgcon) | ||
e1:SetTarget(s.destg) | ||
e1:SetOperation(s.desop) | ||
e:GetHandler():RegisterEffect(e1) | ||
end | ||
function s.filter(c) | ||
return c:IsAttackPos() and c:IsDestructable() | ||
end | ||
function s.destg(e,tp,eg,ep,ev,re,r,rp,chk) | ||
if chk==0 then return Duel.IsExistingMatchingCard(s.filter,tp,0,LOCATION_MZONE,1,nil) end | ||
local g=Duel.GetMatchingGroup(s.filter,tp,0,LOCATION_MZONE,nil) | ||
Duel.SetOperationInfo(0,CATEGORY_DESTROY,g,#g,0,0) | ||
end | ||
function s.desop(e,tp,eg,ep,ev,re,r,rp) | ||
local g=Duel.GetMatchingGroup(s.filter,tp,0,LOCATION_MZONE,nil) | ||
if #g>0 then | ||
Duel.Destroy(g,REASON_EFFECT) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
--バトル・チェンジ | ||
--Battle Change | ||
local s,id=GetID() | ||
function s.initial_effect(c) | ||
--Activate | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetType(EFFECT_TYPE_ACTIVATE) | ||
e1:SetCode(EVENT_FREE_CHAIN) | ||
e1:SetCondition(s.condition) | ||
e1:SetOperation(s.activate) | ||
c:RegisterEffect(e1) | ||
end | ||
function s.condition(e,tp,eg,ep,ev,re,r,rp) | ||
return Duel.GetTurnPlayer()~=tp and Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE | ||
end | ||
function s.activate(e,tp,eg,ep,ev,re,r,rp) | ||
local e1=Effect.CreateEffect(e:GetHandler()) | ||
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) | ||
e1:SetCode(EVENT_ATTACK_ANNOUNCE) | ||
e1:SetCondition(s.con) | ||
e1:SetOperation(s.op) | ||
e1:SetReset(RESET_PHASE+PHASE_END) | ||
Duel.RegisterEffect(e1,tp) | ||
end | ||
function s.con(e,tp,eg,ep,ev,re,r,rp) | ||
return not Duel.GetAttacker():IsContains(tp) and Duel.GetAttacker():GetFlagEffect(id)==0 | ||
end | ||
function s.op(e,tp,eg,ep,ev,re,r,rp) | ||
local ats=eg:GetFirst():GetAttackableTarget() | ||
local at=Duel.GetAttackTarget() | ||
if #ats==0 or (at and #ats==1) then return end | ||
if Duel.SelectEffectYesNo(tp,e:GetHandler()) then | ||
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATTACKTARGET) | ||
local g=ats:Select(tp,1,1,at) | ||
Duel.Hint(HINT_CARD,0,id) | ||
Duel.HintSelection(g) | ||
Duel.ChangeAttackTarget(g:GetFirst()) | ||
Duel.GetAttacker():RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD,0,1) | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
--バトル・ロック | ||
--Battle Lock | ||
local s,id=GetID() | ||
function s.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(s.condition) | ||
e1:SetOperation(s.activate) | ||
c:RegisterEffect(e1) | ||
end | ||
function s.condition(e,tp,eg,ep,ev,re,r,rp) | ||
return Duel.IsAbleToEnterBP() or (Duel.GetCurrentPhase()>=PHASE_BATTLE_START and Duel.GetCurrentPhase()<=PHASE_BATTLE) | ||
end | ||
function s.activate(e,tp,eg,ep,ev,re,r,rp) | ||
local e1=Effect.CreateEffect(e:GetHandler()) | ||
e1:SetType(EFFECT_TYPE_FIELD) | ||
e1:SetCode(EFFECT_CANNOT_ATTACK_ANNOUNCE) | ||
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) | ||
e1:SetReset(RESET_PHASE+PHASE_END) | ||
e1:SetTargetRange(0,1) | ||
Duel.RegisterEffect(e1,tp) | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
--ベンケイ・ガード | ||
--Benkei Guard | ||
local s,id=GetID() | ||
function s.initial_effect(c) | ||
--Activate | ||
local e1=Effect.CreateEffect(c) | ||
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOKEN) | ||
e1:SetType(EFFECT_TYPE_ACTIVATE) | ||
e1:SetCode(EVENT_FREE_CHAIN) | ||
e1:SetTarget(s.target) | ||
e1:SetOperation(s.activate) | ||
c:RegisterEffect(e1) | ||
end | ||
s.listed_names={id+1} | ||
function s.target(e,tp,eg,ep,ev,re,r,rp,chk) | ||
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 | ||
and Duel.IsPlayerCanSpecialSummonMonster(tp,id+1,0,TYPES_TOKEN,1000,0,1,RACE_MACHINE,ATTRIBUTE_EARTH) end | ||
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,0) | ||
Duel.SetOperationInfo(0,CATEGORY_TOKEN,nil,1,tp,0) | ||
end | ||
function s.activate(e,tp,eg,ep,ev,re,r,rp) | ||
if Duel.GetLocationCount(tp,LOCATION_MZONE,tp)<=0 | ||
or not Duel.IsPlayerCanSpecialSummonMonster(tp,id+1,0,TYPES_TOKEN,1000,0,1,RACE_MACHINE,ATTRIBUTE_EARTH) then return end | ||
local token=Duel.CreateToken(tp,id+1) | ||
Duel.SpecialSummon(token,0,tp,tp,false,false,POS_FACEUP) | ||
local e1=Effect.CreateEffect(e:GetHandler()) | ||
e1:SetType(EFFECT_TYPE_SINGLE) | ||
e1:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) | ||
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) | ||
e1:SetValue(1) | ||
e1:SetReset(RESET_EVENT+RESETS_STANDARD) | ||
token:RegisterEffect(e1) | ||
--indes | ||
local e2=Effect.CreateEffect(e:GetHandler()) | ||
e2:SetType(EFFECT_TYPE_SINGLE) | ||
e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) | ||
e2:SetRange(LOCATION_MZONE) | ||
e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) | ||
e2:SetReset(RESET_EVENT+RESETS_STANDARD) | ||
e2:SetValue(s.indesval) | ||
c:RegisterEffect(e2) | ||
local e3=Effect.CreateEffect(e:GetHandler()) | ||
e3:SetType(EFFECT_TYPE_FIELD) | ||
e3:SetCode(EFFECT_MUST_BE_ATTACKED) | ||
e3:SetRange(LOCATION_MZONE) | ||
e3:SetTargetRange(LOCATION_MZONE,0) | ||
e3:SetTarget(s.attg) | ||
e3:SetReset(RESET_EVENT+RESETS_STANDARD) | ||
e3:SetValue(1) | ||
c:RegisterEffect(e3) | ||
end | ||
function s.indesval(e,re) | ||
return re:IsActiveType(TYPE_MONSTER) | ||
end | ||
function s.attg(e,c) | ||
return c:IsCode(id+1) | ||
end |
Oops, something went wrong.